在crontab中连接变量将不起作用

时间:2017-10-28 19:25:14

标签: bash cron

我有一个很长(并且很乱)的crontab(在我的Mac上)。所以我开始通过引入变量来清理它。然后我意识到连接变量(就像在Bash脚本中一样)在我的crontab中不起作用。这就是我所拥有的:

SHELL=/bin/bash
HOME=/Users/leuchtturm
# [1] Previously had this, but this does not seem to work
# $HOME is not being evaluated? Why?
# 
# VIRTUALENV_PYTHON=$HOME/.virtualenvs/py361/bin/python
# Now I have this (elaborated)
VIRTUALENV_PYTHON=/Users/leuchtturm/.virtualenvs/py361/bin/python

# the crontab entry
# Here $HOME is being expanded, but not in the example above [1]
#
*/2  *  *  *  *   source $HOME/.config_vars && $VIRTUALENV_PYTHON $HOME/workspace/monitoring/check_server.py

所以在这一行 VIRTUALENV_PYTHON=$HOME/.virtualenvs/py361/bin/python未评估变量$HOME。我的cron日志有一个条目,上面写着“找不到路径”。

有人可以开导我吗?谢谢!

1 个答案:

答案 0 :(得分:3)

crontab 文件中,看起来像VAR=value的行是 cron 识别的定义,而不是在 shell 下执行。因此,变量定义的值不会以任何方式扩展。

另一方面, crontab条目中的命令由默认的 crontab shell执行,或者在您的情况下由用SHELL变量定义的shell。

请注意,特定的 cron 版本可能不允许您定义任意变量,但只能定义SHELLHOMEMAILTO等特定变量。 Variables in crontab?