[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 系统管理 > 其它 > 正文
为什么有人说 $PATH 里不可以放 '.' 呢?
Steve Hayman (2001-04-19 10:41:21)
背景知识: 环境变数 PATH 是一串用冒号隔开的目录。当你下一个指令而 
没有指定所在的目录,例如 "ls" 而非 "/bin/ls",则你的 shell 就会在 
PATH 所指定的目录中去找寻指令。 


你可以在 PATH 里面放入目前所在的目录 "." 。或者,在 PATH 中加入一 
个空的目录,这两者是等效的 

      for csh users: 

        setenv PATH :/usr/ucb:/bin:/usr/bin 
        setenv PATH .:/usr/ucb:/bin:/usr/bin 

      for sh or ksh users 

       PATH=:/usr/ucb:/bin:/usr/bin export PATH 
       PATH=.:/usr/ucb:/bin:/usr/bin export PATH 

把 "." 放在 PATH 中是很方便的,若要执行 "./a.out" 只要打 "a.out" 
即可,但是这么做会有大麻烦。 

当把 "." 放在 PATH 的最前面情况下。若你目前所在目录是如 "/tmp" 这 
样大家都可以写的地方。如果有别的使用这放了一个名为 "ls" 的程式在 
那里,而你打入 "ls" 那你可能就死得非常难看了。 

把 "." 放到 PATH 的结尾是个比较好的做法: 

        setenv PATH /usr/ucb:/bin:/usr/bin:. 

这么一来,当你在 "/tmp" 中打 "ls" 保?nbsp;shell 就会先找 "/usr/ucb", 
"/bin" 与 "/usr/bin" 里的 "ls"。减少了一点危险。不过仍然不是百分之 
百安全。假如你是个笨拙的打字者,有一天你把 "ls -l" 打成 "sl -l", 
而又有一个聪明的使用者能猜到这种常见的打字错误,在 "/tmp" 底下放 
了一只 "sl",你还是得死。所以啊,千万要小心。 (http://www.fanqiang.com)
    进入【UNIX论坛

相关文章

===更多相关===
 

★  樊强制作 欢迎分享  ★