我正在运行一个简单的 shell 脚本,它在登录 shell 中运行良好cron
,但在登录 shell 中却无法运行。出于某种原因,/usr/local/bin
在运行时不在用户路径上,cron
而在 shell 中运行时却在用户路径上。
确定的环境在哪里cron
?
答案1
一般从为 建立的非登录环境中/bin/sh
,这是运行该命令的默认使用环境。
在大多数版本中,您可以在 crontab 中设置其他环境变量,例如:
PATH=/usr/local/bin:/usr/bin:/bin
@reboot whatever
查看crontab(5)
详情;man 5 crontab
答案2
检查你的脚本正在使用哪个 shell。
crontab 的 shell 和变量在 /etc/crontab 中指定
x@x:~$ cat /etc/crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
sh 使用的配置文件位于用户主目录中。
x@x:~$ ls ~/.profile
/home/x/.profile
您可以在此文件末尾添加 PATH 变量(确保您添加了正确用户的配置文件)
PATH="$PATH:/usr/local/bin"
或者您可以在自己的脚本中添加相同的行。