我在/ etc / crontab文件中定义了“ SHELL”变量:
[martin@martin ~]$ grep SHELL /etc/crontab
SHELL=/usr/local/bin/bash
[martin@martin ~]$ file /usr/local/bin/bash
/usr/local/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked (uses shared libs), for FreeBSD 8.0 (800107), stripped
[martin@martin ~]$
另外,我在/ etc / crontab文件中的所有脚本都在用户“马丁”下启动。但是/home/martin/.bash_profile(用于登录shell)和/home/martin/.bashrc(用于非登录shell)包含一些变量,这些变量在cron作业的情况下会被忽略,但是在我登录到计算机上方时使用SSH或打开新的bash会话。为什么cron会忽略这些变量?cron是否只是简单地执行具有用户“马丁”权限的“ / usr / local / bin / bash my-script.sh”?
.bashrc
包含一行内容,该行会阻止它在非交互式shell中运行。