echo $PATH 显示当前PATH环境变量,该变量的值由一系列以冒号分隔的目录名组成。
如:/usr/local/bin:/bin:/usr/bin。当我们执行程序时,shell自动跟据PATH变量的值去搜索该程序。比如我们现在的工作目录是根目录/ ,有一个程序sunrise在/bin/目录下,我们可以在命令行输入/bin/sunrise 这样来执行它,还可以直接输入sunrise,这时shell会自动去寻找sunrise这个程序所在的完整路径,找到之后才会去执行该程序。shell在搜索时先搜索PATH环境变量中的第一个目录,没找到再接着搜索,如果找到则执行它,不会再继续搜索。
注意:当前工作目录 ./ 一般并未在搜索范围之列,也就是PATH环境变量的值中并不包含./这个当前工作目录。为什么一般不能加入这个当前工作目录呢?主要原因在于安全问题。试想,一个evil 用户在自己的家目录/home/evil/中放了一个名字叫ls的程序,当root用户或其它用户来到这个/home/evil/目录时,想查看这个目录中有些啥子文件,于是执行ls命令,这时如果./目录在PATH环境变量中且搜索时先搜索这个./目录的话,则执行到的程序是/home/evil/ls而不是/bin/ls程序,这样就会造成极大地安全问题。所以我们要避免把./目录加入PATH环境变量之中,不要图一时方便而铸成大错哦!执行当前工作目录中的 program 时还是老老实实的 ./program 这样执行吧!
使用范例:
[tito ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
[tito ~]$ PATH=$PATH:/home/tito/bin #添加/home/tito/bin到PATH环境变量
[tito ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/tito/bin
评论