1. 程式人生 > >su- 與su的區別

su- 與su的區別

su命令和su -命令最大的本質區別就是:前者只是切換了root身份,但Shell環境仍然是普通使用者的Shell;而後者連使用者和Shell環境一起切換成root身份了。只有切換了Shell環境才不會出現PATH環境變數錯誤。su切換成root使用者以後,pwd一下,發現工作目錄仍然是普通使用者的工作目錄;而用su -命令切換以後,工作目錄變成root的工作目錄了。用echo $PATH命令看一下su和su -以後的環境變數有何不同。以此類推,要從當前使用者切換到其它使用者也一樣,應該使用su -命令。

su - root is the same as su - just like login as root,
then the shell is login shell,which mean it will expericene a login process,
usually .bash_profile and .bashrc will be sourced

su root is the same as su like you open an interactive shell in root name,
then only .bashrc will be sourced.

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

語法:
$ su [user_name]
su 命令可以用來互動地更改你的使用者ID和組ID。 Su是switch user 或set user id的一個縮寫。這個命令讓你開啟一個子程序,成為新的使用者 ID 和賦予你存取與這個使用者ID 關聯所有檔案的存取許可權。因此,出於安全的考慮,你在實際轉換身份時,會被要求輸入這個使用者帳號的密碼。
如果沒有引數,su 命令將你轉換為 root(系統管理員)。root 帳號有時也被稱為超級使用者,因為這個使用者可以存取系統中的任何檔案。也正是這個原因,許多人將su命令看成是 supper-user(超級使用者)的一個縮寫。當然,你必須要提供 root密碼。 想要回到你原先的使用者身份,不要再使用 su 命令,你只需要使用 exit命令退出你使用su命令而生成的新的對話程序。
$ su – username
一些配置檔案是為你的對話線索而設立的。當你使用命令 su username時,你的對話特徵和你原始的登入身份一樣。如果你想要你的對話程序擁有轉換後的使用者 ID一致的特徵,你要使用短斜槓: su – username。