配置linux开机自启动时要注意的path问题

发布时间:2020-04-07编辑:脚本学堂
升级了rsync到新版本,默认会安装到/usr/local/bin下,结果rc.local里加的自启动不好用了,找了半天终于在PATH Howto中发现:启动时的path只含有:

配置linux开机自启动时要注意的path问题,有需要的朋友可以参考下。

升级了rsync到新版本,默认会安装到/usr/local/bin下,结果rc.local里加的自启动不好用了,找了半天终于在PATH Howto中发现:启动时的path只含有:
/usr/local/sbin
/sbin
/bin
/usr/sbin
/usr/bin
偏偏就没有/usr/local/bin,debug了半天,重启无数回测试。
解决方法:在/usr/bin下创建一个link就好了。
 
为大家提供一篇howto居然是97年写的,妄我还觉得自己玩了好些年呢,学无止境啊。
http://www.faqs.org/docs/Linux-mini/Path.html
 
其中有这么一段:
Init is a parent process for all the other processes of the system. Other processes inherit environment of the init process and the path is the init path in the rare case that no other path is set.

The 'init path' is fixed in the source of the init program and it is:

    /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin

Note that init path does not contain /usr/local/bin. (看看,就这里写着呢。。。。)

All the programs that are started from /etc/inittab work in init environment, especially system initialization scripts in /etc/init.d (Debian 1.3).

Everything that is started from system initialization scripts has init environment as default environment. For example, syslogd, kerneld, pppd (when started from startup), gpm and most importantly lpd and inetd have init environment and they do not change it.

A group of programs are started from startup scripts but the PATH environment variable is explicitly set in the startup script. Examples are: atd, sendmail, apache and squid.

There are other programs that are started from boot scripts but they change the path completely. One such example is cron.

这篇文档里还有很多path方面的解释,包括我见过很多身边朋友在su时,最不在意的“-”,后果有时很严重哦。