duyojiぶろぐ

技術系ときどき日常系

cronからだと環境変数の値が期待通りに返ってこない

メモ

はじめの方に「export $PATH」的なことをやったらうまくいった


コマンドから実行するとexample.sh内で定義している
変数current_dirにはそのファイル自身(example.sh)があるディレクトリまでのパスを取得できる。

$ sh example.sh

#example.sh

current_dir=$PWD

しかしcrontab -eから実行するとrootユーザーで実行した場合
$PWDは/rootが表示される。
解決法としてdirnameコマンドを使ってファイルまでのパスを取得するようにした。
ちなみにシェルスクリプト内で自分自身のファイル名は「$0」で取得できる。

cronで実行された example.sh

#example.sh

current_dir=`dirname $0`

他にも色々と参考にした記事をみると、相対パスで色々処理したい場合cdで移動して
目的のファイルまで移動して処理するのが良いみたい。
絶対パスを使えば関係ないけど。