![cron 忽略環境變數?](https://rvso.com/image/1330404/cron%20%E5%BF%BD%E7%95%A5%E7%92%B0%E5%A2%83%E8%AE%8A%E6%95%B8%EF%BC%9F.png)
這應該很簡單,但似乎不起作用。我有一個由 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
環境變數crontab
。cron
出於安全原因,只需忽略環境變數。如果MAILTO
未指定,則輸出將郵寄給產生輸出的進程的擁有者。