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


19

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

echo $USER

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

sudo ./myscript.sh

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


是的,有很多方法可以做到。但是,也许最简单的方法是变通方法。从另一个脚本中调用该脚本,在该脚本中“保存”用户ID,以便“ sudo脚本”可以访问它。
sudodus

Answers:


28

使用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

因此,您只需在脚本中替换$USER$SUDO_USER

echo $SUDO_USER

进一步阅读

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.