cron 使用什么 shell?

cron 使用什么 shell?

cron 从 crontabs 运行 shell 命令。

但是,刚刚被 zsh 和 bash 之间的差异所困扰,我现在担心的是,我不知道 cron 使用哪个 shell 来解释 crontab 命令?显然,cron 条目仅指向脚本文件的简单情况由#!/path/to/interpreter第一行处理,但是当 cron 中有更复杂的东西时该怎么办?

我查看了一下/etc/cron*,没有发现任何可以设置或更改此功能的东西?

答案1

您可以输入SHELL=/bin/bash您的crontab- 也可以指向.bashrc使用BASH_ENV="/root/.bashrc"。这应该可以让您开始。我实际上不知道如果您没有SHELL定义会发生什么,但将其添加到crontab可以很容易地分辨出什么是什么。

答案2

crontab(5)manpage 默认处理你的查询/bin/sh

cron(8) 守护进程会自动设置几个环境变量。SHELL 设置为 /bin/sh,LOGNAME 和 HOME 则从 crontab 所有者的 /etc/passwd 行中设置。HOME 和 SHELL 可能会被 crontab 中的设置覆盖;LOGNAME 则不会。

所以添加

SHELL=/bin/bash

添加到 crontab 文件将会相应地改变 shell。

相关内容