使用 $USER 时回显“root”

jaa*_*aaq 2 bash sudo

我想更好地了解 bash 以及何时评估变量。

使用时sudo可以检出使用的用户环境env与root环境交换。因此envsudo env产生不同的结果。

现在,如果我正在执行sudo echo "I am $USER"!结果是I am my-username! 而不是I am root!,大概是因为在执行 sudo 命令之前查找了 $USER 变量。

如何使用相同的命令I am root!来打印?我是否需要一些开关或以某种方式更改字符串?

oli*_*liv 7

在命令中sudo echo "$USER",先bash求值$USER,然后执行命令。在这种情况下,您的用户名将被打印出来。

如果要打印root用户名,必须以root用户身份进行参数扩展。可以使用以下bash -c命令完成:

sudo bash -c 'echo "$USER"'
Run Code Online (Sandbox Code Playgroud)