[CRON] /bin/sh: source: not found

CentOSからFreeBSDに乗り換えた後、cronジョブが失敗するので調査しているときの覚書。

環境: FreeBSD 14.1

cronのメール内容

/bin/sh: source: not found

普段は使い慣れたbashをインストールして使っているけど、FreeBSDはshがデフォルトなのでsourceコマンドがない。
再現するためshシェルに切り替える。
# sh

sourceコマンドではなく「.」を使うらしい。
参考: . (dot) - 現行環境でシェル・ファイルを実行する - IBM Documentation

試しに実行してみる。
# . /root/.bash_profile && /usr/local/bin/bash /home/software/wordpress-backup-google-cloud-storage/main.sh

無事実行できた。
.bash_profileを実行するのはgsutilのための環境変数を設定したいから。

cronを設定変更。
# less /etc/cron.d/wordpress-backup

MAILTO="info@hoge.co.jp"

0 3 * * * root . /root/.bash_profile && /usr/local/bin/bash /home/software/wordpress-backup-google-cloud-storage/main.sh


【関連記事】