cron は環境変数を無視しますか?

cron は環境変数を無視しますか?

これは単純なはずですが、うまく動作していないようです。cron で実行される非常に単純なスクリプトがあります。

export [email protected]
[email protected]
echo "MAILTO is set to $MAILTO"

ただし、Cron は MAILTO 変数を取得していないようです。Cron 電子メールの一部は次のようになります。

X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/deploy>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=deploy>
Date: Thu, 20 Sep 2012 13:05:01 -0700

MAILTO is set to [email protected]

何が足りないのでしょうか? cron がスクリプトに設定された環境変数を取得しないのはなぜですか?

答え1

Unix のプロセスは、自身の環境変数を変更でき、子プロセスが作成された際にその子プロセスの環境変数を定義することもできます。プロセスは、親プロセスの環境変数、子プロセスが作成された後の子プロセスの環境変数、または他のプロセスの環境変数を変更することはできません。

cron ジョブで cron の環境変数を変更しようとしているようですが、これは不可能です。

答え2

cron を実行しているユーザーと同じユーザーとしてログインしていないのではないかと思います。そのため、矛盾が生じています。

答え3

MAILTOファイルに環境変数を設定しますcrontabcronセキュリティ上の理由から、環境変数は無視されます。MAILTO指定されていない場合、出力は出力を生成したプロセスの所有者にメールで送信されます。

関連情報