Linux知识扩展一:执行前为什么加./

时间:2024-10-10 13:33:08

转载:https://www.cnblogs.com/fortunel/p/8663669

1  ./表示当前路径,在执行可执行文件时,linux系统会从环境变量PATH中查找该文件的路径,但因为 Linux 的默认搜索目录里没有当前目录,所以如果你在当前目录需要执行程序就要加上路径。

2 为什么windows系统不用加?那是因为windows系统的环境变量中,默认加了当前路径。

3 为什么不将./加到linux的环境变量中?

基于安全考虑,举例理解:

任何用户对 /tmp 都有 w 的权限,若某用户在 /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  的安全性要低。