
からログイン シェルで問題なく実行される単純なシェル スクリプトを実行していますcron
が、 では実行されません。何らかの理由で、から実行した場合は がユーザー パス上にありませんが、シェルで実行した場合は が/usr/local/bin
ユーザー パス上にあります。cron
決意できる環境はどこにあるのでしょうかcron
?
答え1
通常は、 用に確立された非ログイン環境から/bin/sh
、コマンドを実行するために使用されるデフォルトです。
ほとんどのバージョンでは、crontab で追加の環境変数を設定できます。
PATH=/usr/local/bin:/usr/bin:/bin
@reboot whatever
crontab(5)
詳細を確認してください。man 5 crontab
答え2
スクリプトが使用しているシェルを確認します。
crontabのシェルと変数は/etc/crontabで指定されます。
x@x:~$ cat /etc/crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
sh が使用するプロファイル ファイルはユーザー ホームにあります。
x@x:~$ ls ~/.profile
/home/x/.profile
このファイルの最後に PATH 変数を追加できます (正しいユーザーのプロファイル ファイルに追加していることを確認してください)
PATH="$PATH:/usr/local/bin"
または、独自のスクリプトに同じ行を追加することもできます。