Linux中su和su -區別,別再傻傻分不清


寫在前面

  如果你不清楚su和su -切換用戶的區別,你一定會遇到在使用su切換用戶執行命令出現報錯"command not found"感到驚訝。分明之前這個指令執行的好好的,為什么現在就報錯了呢?關鍵原因就在於你不清楚su和su -命令使用的區別。

su與su -區別

  su和su - 命令使用最主要的區別主要是涉及login-shell和non-login shell的變量讀取方法,兩種不同的變量讀取方法導致執行用戶切換后HOME/PATH/USER/MAIL等變量不同。

  下面我們通過實例再具體展開講述這兩者間的區別。

  su切換用戶

  划重點:

  (1)PATH變量沒有切換成新用戶root,還是dmtsai用戶的。su切換新用戶后的PATH變量不包含/sbin、/usr/sbin等目錄。

  (2)PWD目錄沒有發生切換。

  (3)用戶身份發生切換,切換成root。但是USER變量還是切換前用戶。

  su - 切換用戶

   划重點:

  (1)PATH變量切換成新用戶root,包含/sbin、/usr/sbin等目錄。

  (2)PWD目錄切換成root用戶家目錄。

  (3)用戶身份發生切換,且USER變量為root。

回歸問題 

  現在知道為什么su切換用戶后執行命令依然會出現報錯"command not found"的原因了吧。linux執行命令會通過PATH變量中的目錄依次查找,當路徑中不包含/sbin、/usr/sbin等目錄時自然就找不到。

總結

  如果想要完整的切換到新用戶環境,必須使用su -切換 ,這樣才會連同PATH/USER/MAIL 等變量都轉成新用戶的環境。也就不會出現意料之外的事情了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM