Linux 下執行本目錄的可執行文件(命令)為什麽需要在文件名前加“./”
阿新 • • 發佈:2018-03-28
使用 當前 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 下執行本目錄的可執行文件(命令)為什麽需要在文件名前加“./”