OS X cron和环境variables

我目前使用export命令在/ etc / profile中的OS X中设置了许多环境variables。 当我在terminallogin时,这些都是正确列出的,但是当通过cron执行一个脚本时,这些variables都不会被设置。

据我了解,cron运行自己的环境variables,但我怎么能让我的自定义的进入cron环境呢?

请以最简单的方式解释,正如你可能已经猜到的,这不是我所知道的很多。

谢谢,杰克

我没有详细检查,但bash的manpage解释了(searchINVOCATION),当bash没有作为login或交互式shell调用时,它不会读取/ etc / profile。

login程序总是启动shell作为loginshell,所以我猜cron不会和shell不读取任何configuration文件(根据手册页,它会读取ENVvariables中的shell启动时给出的文件,但cron似乎没有选项来设置)。

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

cron实用程序在非常有限的环境下运行。 这意味着如果你在命令行中交互式地工作(例如, /usr/bin/perl而不是perl ),你必须以某种方式拼写出来。

同样值得一提的是,苹果推荐通过cron launchd 。 (我实际上是在Mac上使用cron ,但这只是因为我已经习惯了Linux机器,所以我保持切换的意思。)

crontab文件中,你可以指定环境variables:

  FOO =酒吧

 0 * * * * echo $ FOO 

以上应该每小时回声“酒吧”。