使用 $USER 时回显 "root"
echo "root" when using $USER
我想更好地理解 bash 以及何时评估变量。
当使用 sudo
时,可以使用 env
检出的用户环境与根环境交换。因此 env
和 sudo env
产生不同的结果。
现在如果我做 sudo echo "I am $USER"!
结果是 I am my-username!
而不是 I am root!
,大概是因为在执行 sudo 命令之前查找了 $USER 变量。
如何使用相同的命令打印 I am root!
?我是否需要一些开关或以某种方式更改字符串?
在命令sudo echo "$USER"
中,bash
先计算$USER
然后执行命令。在这种情况下,您的用户名会被打印出来。
如果要打印root
用户名,必须以root用户进行参数扩展。可以使用 bash -c
命令来完成:
sudo bash -c 'echo "$USER"'
我想更好地理解 bash 以及何时评估变量。
当使用 sudo
时,可以使用 env
检出的用户环境与根环境交换。因此 env
和 sudo env
产生不同的结果。
现在如果我做 sudo echo "I am $USER"!
结果是 I am my-username!
而不是 I am root!
,大概是因为在执行 sudo 命令之前查找了 $USER 变量。
如何使用相同的命令打印 I am root!
?我是否需要一些开关或以某种方式更改字符串?
在命令sudo echo "$USER"
中,bash
先计算$USER
然后执行命令。在这种情况下,您的用户名会被打印出来。
如果要打印root
用户名,必须以root用户进行参数扩展。可以使用 bash -c
命令来完成:
sudo bash -c 'echo "$USER"'