“sudo su – ”和“sudo -i”有什么区别?

可能重复:
sudo -i和sudo su有什么区别 –

我知道这两个命令都会导致获得root-shell。 但是有一些差异。 在一些服务器上,例如提示符是不同的:

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

所以我想“.bashrc”“.bash_profile”和“.profile”的处理方式有些不同。

有人调用一个loginshell而另一个不是?

sudo -isudo su -都会为你提供一个交互式的loginshell。 你所看到的差异是因为sudo被configuration为处理环境variables的方式,在这种情况下是PS1。 你的PS1不同于root的PS1。 如果你看看/ etc / sudoers,你可能会发现一个包含PS1的env_keep行。

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

这指示sudo在运行的命令的环境中保留(除其他之外) PS1环境variables,所以这是您看到的(不同的提示)。

当你运行sudo su -被修改的环境被传递给su然后运行一个loginshell,su不会强制环境变得相同,所以它被设置为root的初始化文件中的任何东西。