Linux知識擴展一:執行前為什麽加./
阿新 • • 發佈:2019-03-05
問題 -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知識擴展一:執行前為什麽加./