1. 程式人生 > >Linux知識擴展一:執行前為什麽加./

Linux知識擴展一:執行前為什麽加./

問題 -m 環境 nbsp path 存在 文件內容 fort span

轉載: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 的安全性要低。

Linux知識擴展一:執行前為什麽加./