【Cron】shだとsourceが使えなくておぎゃぁ

こんにちは、フリーランスエンジニアの太田雅昭です。

Cronだと環境が違う

Cronで実行する場合、色々と環境が変わってしまいます。以下のようにチェックします。

* * * * * env > ~/cron.log
HOME=/home/masaaki
LOGNAME=masaaki
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LANG=C.UTF-8
SHELL=/bin/sh
PWD=/home/masaaki

ここで注目するのはSHELL=/bin/shとなっている点です。sourceコマンドはbashのみで、shでは使えません。ちなみにgamesというディレクトリがありますが、別にゲームをしているわけではありません。ubuntuのデフォルトディレクトリでしょうか?

bashに変更する

以下のようにします。

SHELL=/bin/bash
* * * * * source ~/.bashrc && your-command