我有这个 crontab 文件,其中有很多(100+)个作业,它们在同一目录中执行一些命令,假设~/Documents/
.cd ~/Documents/ && <command>
我可以使用 cronHOME
变量来更改 cron 工作目录,而不是针对每个作业,如中所述人 crontab 5(我最近才发现这一点)。
但是,如果我在 crontab 中设置它:
PATH="/usr/local/bin:/usr/bin:/bin"
HOME=/home/user/Documents
每一份工作突然开始cd ~/Documents/
就不再工作了。如果路径被引用并且有/没有最后一个反斜杠,则相同。
经过大量的反复试验后,我可以说这是~
行不通的(我猜它不会扩展),因为如果我输入文档的绝对路径,它会很好地工作。我已经尝试过添加SHELL=/bin/bash
.
我想保持对所有此类作业的向后兼容性,以便我可以逐一编辑和测试它们,并且不想破坏其命令中具有 ~ 的其他作业。我能做些什么?
答案1
如果您设置HOME=/home/user/Documents
thencd ~/Documents
相当于cd /home/user/Documents/Documents
,这可能会失败。
我应该指出,参考文档中没有任何地方(man 5 crontab
)它是否说你“可以使用该cron
HOME
变量来更改 cron 工作目录”。
结论?不要改变$HOME