我想更好地了解 bash 以及何时评估变量。
使用时sudo可以检出使用的用户环境env与root环境交换。因此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"'
Run Code Online (Sandbox Code Playgroud)