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未指定,則輸出將郵寄給產生輸出的進程的擁有者。

相關內容