su - `whoami` 命令有什么作用?

su - `whoami` 命令有什么作用?

我正在我的项目中运行一个脚本,我看到这个命令

su - `whoami`

我有几个基本问​​题:

  1. 这个命令有什么作用?
  2. whoami 命令之外的 `` 引号有什么意义?
  3. - 用来做什么?

我知道su代表切换用户。

答案1

反引号 ( ``)命令替换:它们被反引号内运行命令的结果替换。他们在这里运行whoami,打印你的用户名。

-su使su运行登录外壳:登录 shell 将从头开始读取某些环境配置等。默认情况下,它只会将用户的 shell 作为普通 shell 运行,这不会完成所有这些工作(请参阅链接)。

su始终启动一个新的用户会话,重新验证用户身份,就像他们从头开始登录一样。任何来自外部的环境变量都会在内壳中被清除。

因此,这相当于命令(假设您在计算机上的用户名也是“ blunderboy”):

su - blunderboy

这意味着“以 blunderboy 身份重新验证新会话并运行登录 shell”。

该命令的总体结果是像当前用户一样从头开始启动一个新会话。为什么要费力这样做呢?可能会发现 的一些副作用su:特别是,因为它启动了一个新的用户会话,所以它会发现对用户所在组的任何更改,以及其他用户或权限更改,以及环境变量全部重置。通常,将用户添加到新组只有在再次登录后才会生效:su计为为此目的再次登录,因此它启动的 shell 将使新组处于活动状态。

1 这是一种简化,但对于这个解释来说已经足够真实了。

相关内容