我知道这两个命令都会导致获得root-shell。 但是有一些差异。 在一些服务器上,例如提示符是不同的:
nomike@testerver:~> sudo -i root@testerver:~> logout nomike@testerver:~> sudo su - [root@testerver ~]#
所以我想“.bashrc”“.bash_profile”和“.profile”的处理方式有些不同。
有人调用一个loginshell而另一个不是?
sudo -i和sudo 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的初始化文件中的任何东西。