我可以从使用 `sudo` 运行的脚本中访问原始 $USER 变量吗?

Jon*_*han 23 command-line bash sudo environment-variables

一个奇怪的问题,我知道。这是脚本:

echo $USER
Run Code Online (Sandbox Code Playgroud)

这是我用来运行它的命令:

sudo ./myscript.sh
Run Code Online (Sandbox Code Playgroud)

现在它打印“root”,但我希望它打印jon我的用户名。有没有办法通过更改脚本而不是命令来做到这一点?

Eli*_*gan 30

使用SUDO_USER环境变量而不是USER.

sudo将运行它的用户名放在SUDO_USER环境变量中:

ek@Io:~$ sudo sh -c 'echo $USER'
[sudo] password for ek:
root
ek@Io:~$ sudo sh -c 'echo $SUDO_USER'
ek
Run Code Online (Sandbox Code Playgroud)

所以你可以简单地在你的脚本中替换$USER$SUDO_USER

ek@Io:~$ sudo sh -c 'echo $USER'
[sudo] password for ek:
root
ek@Io:~$ sudo sh -c 'echo $SUDO_USER'
ek
Run Code Online (Sandbox Code Playgroud)

进一步阅读