Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 指令 su 與 su - 的差異詳解

編輯:Linux 系統常見問題解答

核心差異:環境變數與工作目錄

su 與 su - 最大的本質區別在於 Shell 環境是否一併切換:

  • su:僅切換用戶身份(如 root),但保持原用戶的 Shell 環境,包括 PATH、當前工作目錄等。
  • su -:連同用戶與 Shell 環境一起切換,載入目標用戶的完整登入環境(讀取 /etc/profile、~/.bash_profile 等),PATH、工作目錄皆變為目標用戶的設定。

實際表現比較

項目susu -
工作目錄維持原用戶目錄切換為 root 的家目錄(/root)
PATH 環境變數繼承原用戶 PATH,可能缺少系統管理路徑(/sbin, /usr/sbin)重置為 root 完整 PATH,包含所有系統管理指令路徑
環境變數保留原用戶大部分變數建立乾淨的登入環境

為何建議使用 su -

只有完整切換 Shell 環境,才能避免 PATH 環境變數錯誤導致系統管理指令找不到(如 ifconfig、fdisk 等位於 /sbin)。同理,切換至其他用戶時也應使用 su - 用戶名 以確保環境正確。

快速驗證

$ su
Password: 
# pwd
/home/original_user
# echo $PATH
/usr/local/bin:/usr/bin:/bin

# exit
$ su -
Password: 
# pwd
/root
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Copyright © Windows教程網 All Rights Reserved