如何以这样的方式设置我的crontab环境,以便它可以访问内置的BASH变量,例如$ HOME,$ PWD,$ OLDPWD,$ USER,$ PATH,$ PS1等,所以依赖这些变量的脚本可以在crontab环境中运行吗?这是一个我不知道的文件来源,还是稍微复杂一些?
答案 0 :(得分:2)
这些变量始终按预期设置:HOME,PWD,USER。
如果您按照以下方式安排脚本:
0 0 * * * /path/to/script.sh
并且脚本的第一行是#!/bin/bash
,然后可能它会在运行时来源~/.bashrc
但不会~/.bash_profile
或~/.profile
。除此之外,您提到的变量应该按预期工作。例如,如果您更改脚本中的目录,则会更新OLDPWD
和PWD
。我不知道PS1
在脚本中的相关性如何。
另一方面,如果在你的crontab
中你想要安排一个命令而你想要.bashrc
来源,那么你必须这样写:
0 0 * * * . .bashrc; somecmd
# or:
0 0 * * * bash -c somecmd
另请注意,尽管您可以在crontab
中设置变量,但它与shell脚本中的变量不同。例如,这些工作:
SHELL = /bin/bash
SHELL=/bin/bash
PATH=~/bin:/usr/bin/:/bin
另一方面,这不符合您的期望:
PATH=$HOME/bin:$PATH
正如man 5 crontab
中所述,未解析值(=
之后的任何内容),因此本示例中的$HOME
和$PATH
将按字面意思进行。
答案 1 :(得分:0)
尝试使用“The EasyCronjobHandler”http://codecanyon.net/item/the-easycronjobhandler/6296537