cron 使用什么外壳?

art*_*bot 4 debian cron

cron 从 crontabs 运行 shell 命令。

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

我查看/etc/cron*并看不到任何可能允许设置或更改的内容?

use*_*517 13

crontab中(5)手册页与您的查询交易默认情况下它是/bin/sh

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

所以添加

SHELL=/bin/bash
Run Code Online (Sandbox Code Playgroud)

到 crontab 文件将相应地更改外壳。


MrM*_*tyk 5

你可以把SHELL=/bin/bash你的crontab- 你也可以指向一个.bashrcusing BASH_ENV="/root/.bashrc"。那应该能让你继续前进。我实际上不知道如果您没有SHELL定义会发生什么,但是将它添加到crontab可以很容易地分辨什么是什么。