【轉】linux下命令su與su - 的區別。

ddlovefish發表於2014-02-12
問題現象:Linux系統下用普通使用者登入,然後用su命令切換到超級使用者,再輸入ifconfig命令,報錯:command not find。而如果用su -命令切換到超級使用者,再輸入ifconfig命令則能成功執行。
解決方案:大部分Linux發行版的預設賬戶是普通使用者,而更改系統檔案或者執行某些命令,需要root身份才能進行,這就需要從當前使用者切換到root使用者,Linux中切換使用者的命令是su或su -,下面就su命令和su -命令最大的本質區別給大家詳解一下: 前者只是切換了root身份,但Shell環境仍然是普通使用者的Shell;而後者連使用者和Shell環境一起切換成root身份了。只有切換了Shell環境才不會出現PATH環境變數錯誤。su切換成root使用者以後,pwd一下,發現工作目錄仍然是普通使用者的工作目錄;而用su -命令切換以後,工作目錄變成root的工作目錄了。用echo $PATH命令看一下su和su -以後的環境變數有何不同。以此類推,要從當前使用者切換到其它使用者也一樣,應該使用su -命令。 打個比方:
在普通使用者下輸入:
$pwd
/home/test (當前使用者目錄)
$su
******        (輸入密碼)
#pwd         (再次檢視路徑)
/home/test (還是當前使用者目錄)
但是如果換成su -的話結果如下:
$pwd
/home/test(當前使用者目錄)
$su -
******        (輸入密碼)
#pwd         (再次檢視路徑)
/root    (切換到超級使用者目錄)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29306197/viewspace-1080357/,如需轉載,請註明出處,否則將追究法律責任。

相關文章