cron的PATH设置在哪里?
Cron不会使用crontab而是拥有自己的crontab的用户的路径。可以通过PATH=/foo/bar在crontab的开头添加内容来轻松更改它,经典的解决方法是始终使用绝对路径访问cron运行的命令,但是cron的默认PATH在哪里定义? 我在Arch系统(cronie 1.5.1-1)上创建了具有以下内容的crontab,并在Ubuntu 16.04.3 LTS盒上进行了测试,结果相同: $ crontab -l * * * * * echo "$PATH" > /home/terdon/fff 打印: $ cat fff /usr/bin:/bin 但为什么?系统范围的默认路径是在中设置的/etc/profile,但其中包括其他目录: $ grep PATH= /etc/profile PATH="/usr/local/sbin:/usr/local/bin:/usr/bin" /etc/environment或中没有其他相关内容,/etc/profile.d我认为cron可能会读取其他文件: $ grep PATH= /etc/profile.d/* /etc/environment /etc/profile.d/jre.sh:export PATH=${PATH}:/usr/lib/jvm/default/bin /etc/profile.d/mozilla-common.sh:export MOZ_PLUGIN_PATH="/usr/lib/mozilla/plugins" /etc/profile.d/perlbin.sh:[ -d /usr/bin/site_perl ] && PATH=$PATH:/usr/bin/site_perl /etc/profile.d/perlbin.sh:[ -d /usr/lib/perl5/site_perl/bin ] && PATH=$PATH:/usr/lib/perl5/site_perl/bin …