1. 程式人生 > >Linux 下執行本目錄的可執行文件(命令)為什麽需要在文件名前加“./”

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

使用 當前 bin post 文件內容 sbin use usr 新增

一、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

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