su 與 su - 最大的本質區別在於 Shell 環境是否一併切換:
/etc/profile、~/.bash_profile 等),PATH、工作目錄皆變為目標用戶的設定。| 項目 | su | su - |
|---|---|---|
| 工作目錄 | 維持原用戶目錄 | 切換為 root 的家目錄(/root) |
| PATH 環境變數 | 繼承原用戶 PATH,可能缺少系統管理路徑(/sbin, /usr/sbin) | 重置為 root 完整 PATH,包含所有系統管理指令路徑 |
| 環境變數 | 保留原用戶大部分變數 | 建立乾淨的登入環境 |
只有完整切換 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