crontabで変数を使用するときの注意

コマンドラインcrontab -e すると、エディタが起動して自分のcrontabファイルを編集することができる。

crontabの中では、以下のようにコマンド実行時の環境変数を定義してあげることができる。

# コマンド実行時のベースとなるPath
BASE_PATH=/home/snaka/scripts
0 * * * * $BASE_PATH/some_command "hoge" > ~/log/cron.log 2>&1

しかし、以下のように変数の右辺として変数の展開値を利用しようとするとうまくいかない。

BASE_PATH=/home/snaka/scripts/
COMMAND=$BASE_PATH/some_command

どうも、crontabを解釈する際に、変数宣言の右辺の値として変数の値は展開されず、そのまま$BASE_PATH/some_commandというとして解釈されるようだ。
まあ、当然といえば当然かもしれないが、シェルスクリプトのように環境変数の定義が行えるんだったら、変数の値の展開もやってくれてもいいのに... と思う。

こんなので1時間くらいはまった。