繁体   English   中英

使用sudo运行时在shell脚本中获取$ USER?

[英]Getting $USER inside shell script when running with sudo?

如果我使用sudo运行shell脚本,如何获得正确的$ USER?

我在Mac安装包中将它们作为postinstall脚本运行,在那里它们被自动sudo-ed,但我需要使用用户名做一些事情。

但是,$ HOME是正确的。 不优雅的方法是从主路径中提取名称,但我想知道是否有一种自然的方法来做到这一点。

我不能影响调用脚本的方式,因为它是安装程序内的自动调用。

在我的系统上,变量$SUDO_USER设置为调用者的用户名。

您不应直接从${HOME}变量中提取用户名。 它正在配置而不是计算。 要提取用户名,您可以查看/etc/passwd文件,但这是非常依赖于系统的,例如,有时您必须查看LDAP目录或通过NIS传播条目...

您可以使用$(logname) ,即使您当前正在进行sudo,也会返回您的登录名。

检查变量SUDO_USER

http://www.gratisoft.us/sudo/man/sudo.html#environment

获取用户的另一种方法是使用who命令。 当你不在乎用户是否有sudo时,这很有用。

who -m | awk '{print $1;}'

SUDO_USER不可携带。 它在Fedora 17上没有设置。

调用sudo时, $USER$UID变量是不可预测的。 一些发行版报告sudoer,其他发布报告root用户。

这绝不是完美的,但你可以使用test -w ~root && echo I have write access to ~root

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM