sudo 登录和提示显示的区别

sudo 登录和提示显示的区别

sudo -s和之间有什么区别?sudo -i为什么它们会给我不同的 shell?看来-s让我留在 之内bash,并-i给了我sh

在 MacOSX High Sierra 10.13 上,如果我sudo -s在终端中输入密码,我会得到 root 作为我的用户名,但提示符下会出现一个美元符号:

user1@mymachine:~$ sudo -s
**root@mymachine:~$**

但如果我输入sudo -i,我会得到:

user1@mymachine:~$ sudo -i
Password:<br/>
**mymachine:~ root#**

为什么在上面的例子中,如果我是 root 用户,则不会出现井号 # sudo -s? 我不是真正的 root 吗?
两者之间的环境变量是否不同?

答案1

您需要意识到的第一件事是,sudo -s相当于sudo -s rootsudo -i相当于sudo -i root。每当您从 sudo 中省略用户时,它都会假定您针对的是用户 root。

sudo -ssudo -i以目标用户身份登录时以目标用户身份运行 shell 。

无论何时运行,sudo -s您实际上都在将 shell 更改为 root 用户 shell,而无论何时运行,sudo -i您实际上都在注销当前用户并以 root 身份登录。了解这一点很重要,因为无论何时将 shell 更改为 root 用户 shell,您仍会保留用户导出信息。无论何时运行,您都在sudo -i注销用户并以 root 身份登录。这意味着您采用了 root 用户的 shell 配置。

这无关紧要,但你应该避免将你的用户更改为 root,因为你可能会不小心破坏一些东西,你应该只对需要升级的每个命令执行 sudo,即使这很烦人。如果你真的想切换到 root shell,你应该运行它,su这将允许你以 root 身份登录。

相关内容