本文转自:http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager_1.php#dir_path

  1. 1、不同身份使用者默认的PATH不同,默认能够随意运行的命令也不同(如root与vbird); 
  2. 2、PATH是可以修改的,所以一般使用者还是可以透过修改PATH来运行某些位于/sbin或/usr/sbin下的命令来查询; 
  3. 3、使用绝对路径或相对路径直接指定某个命令的档名来运行,会比搜寻PATH来的正确; 
  4. 4、命令应该要放置到正确的目录下,运行才会比较方便; 
  5. 5、本目录(.)最好不要放到PATH当中。 

例题:
如果我有两个ls命令在不同的目录中,例如/usr/local/bin/ls与/bin/ls那么当我下达 ls 的时候,哪个ls会被运行?
答:
那还用说,就找出 PATH 里面哪个目录先被查询,则那个目录下的命令就会被先运行了!

例题:
为什么PATH搜寻的目录不加入本目录(.)?加入本目录的搜寻不是也不错?
答:
如果在PATH中加入本目录(.)后,确实我们就能够在命令所在目录进行命令的运行了。 但是由於你的工作目录并非固定(常常会使用cd来切换到不同的目录), 因此能够运行的命令会有变动(因为每个目录底下的可运行档都不相同嘛!),这对使用者来说并非好事。

另外,如果有个坏心使用者在/tmp底下做了一个命令,因为/tmp是大家都能够写入的环境,所以他当然可以这样做。 假设该命令可能会窃取使用者的一些数据,如果你使用root的身份来运行这个命令,那不是很糟糕? 如果这个命令的名称又是经常会被用到的ls时,那『中标』的机率就更高了!

所以,为了安全起见,不建议将『.』加入PATH的搜寻目录中。