![如何为 cron 全局设置 SHELL=/bin/bash](https://linux22.com/image/94141/%E5%A6%82%E4%BD%95%E4%B8%BA%20cron%20%E5%85%A8%E5%B1%80%E8%AE%BE%E7%BD%AE%20SHELL%3D%2Fbin%2Fbash.png)
通过BASH_ENV
分配,/etc/environment
我注意到它不会影响 cron 作业。
我发现SHELL=/bin/bash
在用户的 crontab 中添加就可以了!是的!如果我只是添加(到 crontab):
SHELL=/bin/bash
... 有用。我能以 root 身份进入并执行简单的操作:
sed -i 1iSHELL=/bin/bash /var/spool/cron/*
但是,我希望将此设置设为全局(或默认设置)。
是否可以将默认的 cron SHELL 设置为 bash?
我已经尝试过以下方法,但都没有成功:
- 添加行
/etc/crontab
仅影响 /etc/crontab 本身并非所有用户 - 添加
/etc/sysconfig/crond
并重新启动 cron - 添加
/etc/environment
并重新启动 cron - 添加
session required pam_env.so readenv=1
到/etc/pam.d/crond
并重新启动 cron - 添加行
/etc/default/cron
并再次重新启动
如何将默认的 cron SHELL 设置为 bash?
答案1
无法为 cron 作业设置全局默认 shell。
答案2
另一种方法是,如果您从 crontab 运行 shell 脚本,那么您可以将其放在脚本的顶部。
#!/bin/bash -l
这将使它像一个登录 shell。