如果我创建/root/bin/whoami.sh包含以下内容的脚本
#!/bin/bash
whoami
Run Code Online (Sandbox Code Playgroud)
并且这个脚本由具有正确配置的sudo的用户调用,它将指示
root
Run Code Online (Sandbox Code Playgroud)
有没有快速的方法来获取脚本中的实际用户,还是我必须求助于传递此用户名的参数?
eva*_*van 122
如果您使用,$ SUDO_USER不起作用sudo su -.
它还需要多次检查 - 如果$USER == 'root'获得$SUDO_USER.
而不是命令whoami使用who am i.这将运行who为当前会话筛选的命令.它为您提供了比您需要的更多信息.所以,这样做只是为了得到用户:
who am i | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)
或者(更简单)你可以使用logname.它与上述声明的作用相同.
这将为您提供登录到会话的用户名.
这些工作无论是sudo或sudo su [whatever].无论多少次su,它都可以工作sudo.
Bra*_*ley 51
我认为$ SUDO_USER是有效的.
#!/bin/bash
echo $SUDO_USER
whoami
Run Code Online (Sandbox Code Playgroud)
Ale*_*ski 13
以下是如何获取调用脚本的人的用户名,无论是否为sudo:
if [ $SUDO_USER ]; then user=$SUDO_USER; else user=`whoami`; fi
Run Code Online (Sandbox Code Playgroud)
或更短的版本
[ $SUDO_USER ] && user=$SUDO_USER || user=`whoami`
Run Code Online (Sandbox Code Playgroud)
小智 8
此处不适合使用whoami、who am i、who、id或。$SUDO_USER
实际上,who这永远不是问题的解决方案,因为它只会列出登录的用户,可能有几十个......
在我看来,唯一有价值的答案是使用logname.
希望这可以帮助
抢
如果它是您正在寻找的 UID(对于 docker 恶作剧很有用),那么这有效:
LOCAL_USER_ID=$(id -u $(logname))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45856 次 |
| 最近记录: |