cron ジョブの出力として電子メールを送信するために esmtp を使用しています。SMTP サーバーと資格情報の設定は $HOME/.esmtprc に保存されています。ただし、$HOME 環境変数は、マニュアルで示されているように /etc/passwd の HOME ではなく、'/' に設定されているようです。/usr/sbin/sendmail を変更して環境変数をファイルに出力したところ、次のようになりました。
ホーム='/'
ただし、電子メールのヘッダーには次の内容が含まれています:
X-Cron-Env: <HOME=/home/username>
これは正しいです。では、なぜ esmtp の $HOME が設定されていないのでしょうか?
答え1
おそらく、特定のユーザーとして「crontab -e」経由でアクセスできるユーザー cron について言及しているものと思われます。
多くの場合、cron ジョブは $HOME を '/' に設定して実行されます。
cron の一部のバージョンでは、crontab に行を追加することでこれを変更できます。
たとえば、「crontab -e」を実行すると、次のような行が表示されます。
HOME=/home/myhome
0 * * * * /bin/sh -c "echo $HOME" >> /tmp/doesitwork.log
または似たようなもの