我想cron
从特定的 shell (Zsh) 运行脚本。我认为以下方法会起作用:
00 02 * * * exec zsh; /path/to/script.sh
但显然没有,为什么?
这也让我想知道,我怎样才能找到什么壳和初始化脚本cron
在运行 crontab 中的条目之前是否先运行?
答案1
怎么样:
00 02 * * * exec /usr/bin/zsh /path/to/script.sh
这将告诉 zsh 运行该脚本。现在你希望它在 zsh 中运行,没关系,只需在开始处添加 shebang 即可:
#!/usr/bin/zsh
the_rest
答案2
Cron 在 中配置了几个环境变量/etc/crontab
,特别是SHELL
和PATH
。SHELL
的默认值为/bin/sh
。因此,除非在脚本中更改或以其他方式指定,否则cron
将使用sh
.