cronの実行時の環境変数は、sshでログインしたときと異なるので、コンソールから叩いているときのコマンドをそのまま書いてもパスが通ってなかったりして、一筋縄には行かない。
ログインシェルの環境でcronを実行してくれるオプションがあるのでこれを使う。
-l
オプションを使う(bashを使う場合)
* * * * * /bin/bash -l echo 'as a login shell'
man bash
すると、
-l Make bash act as if it had been invoked as a login shell (see INVOCATION below).
というオプションがあり、-l
をつけると、ログインシェルと同様の動きをしてくれる。
本来不要な(cron実行時には必要ない)変数が有効になる可能性はあるけど、設定するのが大変なのであれば手軽。
環境変数を定義できるので適宜定義すればよいが、ログインしたときの環境変数まま動かせれば、ある意味では開発時に動かしていた環境と揃えることができて良い(とおもう)