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未指定,则输出将邮寄给产生输出的进程的所有者。

相关内容