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

“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”的处理有些不同。

一个调用登录 shell,而另一个不调用吗?

答案1

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 的初始化文件中的任何内容进行设置。

相关内容