Cron環境変数

Cron環境変数

からログイン シェルで問題なく実行される単純なシェル スクリプトを実行しています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"

または、独自のスクリプトに同じ行を追加することもできます。

関連情報