OS X cron 和环境变量

OS X cron 和环境变量

我目前正在使用 export 命令在 OS X 中的 /etc/profile 中设置一些环境变量。当我在终端中检查时,这些变量都正确列出,但是当通过 cron 执行脚本时,这些变量都没有设置。

据我了解,cron 使用其自己的环境变量运行,但我如何才能将我的自定义变量也放入 cron 环境中?

请以最简单的方式解释,您可能已经猜到了,这不是我了解很多的东西。

谢谢,杰克

答案1

我没有详细检查,但 bash 手册页解释道(搜索 INVOCATION),当 bash 不是作为登录或交互式 shell 调用时,它不会读取 /etc/profile。

登录程序总是将 shell 作为登录 shell 启动,因此我猜测 cron 不会这样做,并且 shell 不会读取任何配置文件(根据手册页,它会在启动 shell 时读取 ENV 变量中给出的文件,但 cron 似乎没有设置该文件的选项)。

我发现依赖 cron 作业脚本中的任何全局设置(例如 PATH)通常会有问题,因此我在每个脚本中定义自己的设置。

答案2

在里面crontab文件中,可以指定环境变量:

FOO=酒吧

0 * * * * 回显 $FOO

以上内容应每小时回显“bar”。

答案3

cron实用程序在非常有限的环境下运行。这意味着您必须以一种在命令行上交互工作时不会使用的方式拼写出内容(例如,/usr/bin/perl而不仅仅是perl)。

值得一提的是,Apple 建议launchd使用cron。 (实际上我cron在 Mac 上使用,但只是因为我习惯在 Linux 机器上使用。我一直想换一下。)

相关内容