目前所在目录下有一个configure的可运行文件,如果我们直接执行configure命令,系统会出现错误提示,必须执行./configure命令才能正确运行。这是为什么呢?
这是路径设置的问题。“./”所代表的是当前目录,如果要让当前目录下的文件不需添加“./”即可运行,只需将“./”加入路径参数PATH中即可,如下所示:
export PATH=$PATH:./
系统为什么不将“./”加入路径参数呢?这是基于安全性的考虑。若系统管理者所在的目录中有可运行文件,而该文件有问题时,被执行后会发生不可预测的问题。
例如:任何用户在/tmp之下都有可擦写的权限,若某用户在/tmp之下新增ls这文件,而文件内容如下:
/usr/sbin/useradd -m adm0
/bin/ls
如果PATH的路径设为export PATH=./:$PATH:,当root进入/tmp并执行ls时,就会优先执行/tmp/ls,而非系统默认的/bin/ls,而不知不觉中新增了一个用户adm0。因此即使要将当前目录加入路径参数中,export PATH=$PATH:./的安全性也将优于export PATH=./:$PATH。
chengshiding 于 2012-05-10 23:41:54发表:
NB