当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用sudo运行时在shell脚本中获取$USER?》经验,为你挑选了4个好方法。

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

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

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

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



1> dz...:

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

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



2> Gauthier..:

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


对于未来的googlers; 这应该是公认的答案,它适用于OSX,Debian和Centos.
@Knetic为未来你和其他Google员工,它可能不会:https://bugzilla.gnome.org/show_bug.cgi?id = 747046

3> brianegge..:

检查变量SUDO_USER.

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

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

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



4> 小智..:

SUDO_USER不便携.它在Fedora 17上没有设置.

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

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

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有