su和su - 的區別

weixin_34262482發表於2014-06-17

Linux中切換使用者的命令是su或su -。前天我在使用useradd這個命令時,才體會到這兩者的本質區別。如圖:

我首先是用su命令切換到root身份的,但是執行useradd時,出現錯誤:bash: useradd: command not found。google了一下,原因是在這個用su命令切換過來的root使用者上。

su命令和su -命令最大的本質區別就是:su 只是切換了root身份,但Shell環境仍然是普通使用者的Shell

而su - 連使用者和Shell環境一起切換成root身份了。只有切換了Shell環境才不會出現PATH環境變數錯誤。

su切換成root使用者以後,pwd一下,發現工作目錄仍然是普通使用者的工作目錄;

而用su -命令切換以後,工作目錄變成root的工作目錄了。用echo $PATH命令看一下su和su -以後的環境變數有何不同。以此類推,要從當前使用者切換到其它使用者也一樣,應該使用su -命令。如圖:

 su - root:表示人以root身份登入

su root:表示與root建立一個連結,通過root執行命令

su  後面不加使用者是預設切到 root
su  是不改變當前變數
su - 是改變為切換到使用者的變數 
也就是說su只能獲得root的執行許可權,不能獲得環境變數

而su -是切換到root並獲得root的環境變數及執行許可權

相關文章