除了路径之外,`su` 和 `su -` 之间还有什么区别?

除了路径之外,`su` 和 `su -` 之间还有什么区别?

我看到这su -使得 shell 成为登录 shell su --help。我很好奇这和普通命令之间有什么区别su

我知道路径上似乎存在差异,还有其他差异吗,或者这几乎是唯一的差异?

答案1

我通常遇到的差异是环境变量的差异。 su - 更改环境, su 不更改。例如:“su -”可以提供不同的 PATH,访问其他工具,可以使用不同的配置提供其他 HOME(~/.ssh !/.Xauthority 等)

答案2

据我所知,它su -模拟了一次全新登录,因此会触发与登录相关的所有操作,同时su只是将用户切换到 root 权限。

答案3

如果 ~/.profile 存在,则登录 shell 会获取它的源。因此,这实际上取决于您的 ~/.profile 中有什么?

通常这些是环境变量差异,例如 PATH 或提示(PS1 环境变量),但显然还存在其他差异......这实际上取决于您在 shell 配置脚本中输入的内容。

答案4

man su

   -, -l, --login
          make the shell a login shell

所以下一个问题是,什么是登录 shell,以及它与非登录 shell 有何不同。

man bash下面INVOCATION您可以读到一个长而迂腐的部分,它可以归结为这样的内容:登录 shell 运行文件profile(例如/etc/profile~/.bash_profile),而交互式非登录 shell 运行bashrc文件。

相关内容