linux下,当在终端输入某个命令时,系统会自动到PATH所指的位置去查找该命令执行。
没有PATH,就得输入该命令的绝对路径,很麻烦。
查看PATH的值#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
每个路径用冒号隔开。
添加路径到PATH
如将/etc/apache/bin添加到PATH中。
1、只对本次登录有效。
在终端,
#PATH=$PATH:/etc/apache/bin
注:网上很多加了#export PATH这句,实际多余。
export的作用是显示或设置环境变量,即在shell中定义的变量只对当前shell有效,而通过export 命令可以将变量设置为环境变量从而使变量对以后的shell进程也有效。
因为PATH已经是环境变量了,再用export PATH画蛇添足,
2、永久全局有效。
在文件/etc/profile最后添加PATH=$PATH:/etc/apache/bin
然后重启或者source /etc/profile
再清晰的理下过程:
(1)#sudo gedit /etc/profile
(2)在文件/etc/profile最后添加PATH=$PATH:/etc/apache/bin
(3)重启永久生效
有的文章第三步用source /etc/profile 这只是对当前的终端有效。
当然,如果懒得重启而且又只是使用当前终端并且希望下次永久有效,source /etc/profile是个不错的选择。
注:source filename是执行filename文件中的命令。
为什么要修改该文件,这得看该文件什么时候被执行,经分析,是输入密码登录进用户界面后。
3、永久当前用户有效。
在文件~/.bashrc最后添加PATH=$PATH:/etc/apache/bin
详细同2.
修改PATH(删除某路径)添加路径上面说过了,那么删除PATH中的某条路径呢?
触类旁通,直接PATH=[路径]:[路径]:[路径]……
PAHT变量存在哪个文件中?网上很多说存在/etc/profile或~/.bashrc (ubuntu)中,但我没找到,我们可以在/etc/profile或~/.bashrc中修改PATH,但并不是说PATH必须存在该路径下。
这个涉及到bash及系统启动时环境变量读取的问题,到哪读就存在哪。
经过find /etc -name \'*\' | xargs grep \'PATH\'搜索出来一大堆,
分析系统读PAHT读了多次,如进入不同用户环境还要读取该环境下的PATH。
最后成功登录进用户界面时要读/etc/profile文件,因此在/etc/profile文件中修改PATH是可行的。