红联Linux门户
Linux帮助

当前目录下的文件为什么不能执行?为什么要加上./才能执行?

发布时间:2012-05-10 15:12:50来源:红联作者:empast
目前所在目录下有一个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。
文章评论

共有 1 条评论

  1. chengshiding 于 2012-05-10 23:41:54发表:

    NB