cronを設定したユーザーで実行されるため、読み込むものかと思っていたのですが、なぜ読み込まれないのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答4件
0
おそらくは、cronが「バッチで自動的に処理されるもの」なのでユーザーのログイン設定に左右されないことを前提に書くべきものという考えからだと思います。
投稿2017/04/13 05:47
総合スコア18404
0
ベストアンサー
bash は次のいずれかの条件が満たされないと、/etc/profile や ~/.bash_profile といったファイルを読み取らない、という挙動をします。
- 対話的なシェルとして起動された(stdin/stdoutとも端末に紐づいていて -c オプション無し、あるいは -i オプションを指定された)
- --login オプションを付けて起動された
※上の条件を満たしていても、--noprofile オプションを付けていると読みとらない
cron で bash スクリプトを を起動する際にはどちらの条件も満たさないため、読み込まれていない、ということになります。
投稿2017/04/13 06:02
総合スコア13707
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
よくまとまっているページがありました。参考まで。
bashの設定ファイル(.bash_profile, .bashrc等)がどんなときに読み込まれるかまとめ
投稿2017/04/13 06:12
総合スコア38352
0
cronがパスなどを読み込まない理由は、
ユーザーがログイン時に読み込む初期シェルの設定があるからです。
#/etc/passwd
などで設定しています。
もしそのユーザーがbashを使っているならば、
.bash_profile
や.bashrc
に環境変数やエイリアスを書きますが、
cshを使っているならば.chsrc
、tcshなら.tcshrc
になるからです。
Linuxが、bashを利用しているので.bashrc
や.bash_profile
で設定していると思われがちですが。
もう少しcronについて説明すると、
crontab -l
などで出てくる設定値は、ユーザーにより使っているファイルが異なっています。
#実体はスプール領域 /var/spool/cron/[ユーザー名]
に格納されています。
cronデーモンは1分ごとに起動しているデーモンになっており、
/etc/crontab
と/etc/cron.d/
を読み込んでいます。
もし必ず環境変数を読み込みたいのであれば、先頭に入れてあげれば良いです。
#ただしお薦めしません。cronが実行するシェルの中で指定してあげるべきです。
cron
1SHELL=/bin/bash 2PATH=/sbin:/bin:/usr/sbin:/usr/bin 3MAILTO=root 4HOME=/ 5 6# * * * * * user-name command to be executed
投稿2017/04/13 07:18
総合スコア1294
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。