インフラ系SEの技術メモ

雑なエンジニアが低信頼性のメモを書いています。参考程度にとどめてください。

(Linux)スクリプトがcronでは動かないのでターミナル上では動く時

構文エラーが起きている

a.shというスクリプトがあったとして、動かないケースは

/bin/sh a.sh

で動かすとおそらくエラーになると思います。

一方でデフォルトのシェルがbashであれば a.shでは動く。

要はcronでは暗黙的にshで動いてしまうので、bashユニークな記載(特に変数周り)をしていると「cronではなぜか動かない」という事態になります。

それが嫌な場合は明示的に bash a.sh とcrontabに書いてしまうことをお勧めします。