Linux

“sudo su -”和“sudo -i”有什麼區別?

  • January 16, 2013

可能重複:

sudo -i 和 sudo su - 有什麼區別

我知道這兩個命令都會導致獲得一個 root-shell。但也有一些區別。在某些伺服器上,例如提示不同:

nomike@testerver:~> sudo -i
root@testerver:~> logout
nomike@testerver:~> sudo su -
[root@testerver ~]# 

所以我猜“.bashrc”“.bash_profile”和“.profile”的處理方式有所不同。

一個呼叫登錄 shell 而另一個不呼叫嗎?

兩者都sudo -i將為sudo su -您提供互動式登錄 shell。您看到的差異是因為 sudo 配置為處理環境變數的方式,在本例中為 PS1。您的 PS1 與 root 的 PS1 不同。如果您查看 /etc/sudoers,您可能會找到env_keep包含 PS1 的行。

Defaults    env_keep += "MAIL PS1 PS2 QTDIR ..."

這指示 sudo 將環境變數(以及其他)保留在PS1您正在執行的命令的環境中,因此這就是您所看到的(不同的提示)。

當您執行sudo su -修改後的環境被傳遞到su然後執行登錄 shell 時,su 不會強制環境相同,因此它會使用 root 初始化文件中的任何內容進行設置。

引用自:https://serverfault.com/questions/469539