Linux 下執行本目錄的可執行文件(命令)為什么需要在文件名前加“./”


一、PATH 是環境變量,里面保存了執行文件路徑(通常會包含多個路徑,各路徑之間以冒號“:”進行間隔)。當執行一個可執行文件(命令)時,Linux 會優先到 PATH 環境變量中保存的路徑下進行查找。使用export $PATH命令可以查看環境變量的內容。

二、“.”表示當前目錄,Windows/Dos 的默認搜索路徑(即 PATH 環境變量)里有當前目錄,所以不需要加。其實加上也是一樣的效果。因為 Linux 的默認搜索目錄里沒有當前目錄,所以如果你在當前目錄需要執行程序就要加上路徑。

三、理論上,如果要讓當前目錄下的文件不需添加“./”即可運行,只需將“./”加入路徑參數PATH中即可,如下所示:

export PATH=$PATH:./

但通常不建議這樣做,這是基於安全性的考慮。若系統管理者所在的目錄中有可運行文件,而該文件有問題時,被執行后會發生不可預測的問題。例如:任何用戶對 /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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM