如果我创建脚本 /root/bin/whoami.sh
包含:
#!/bin/bash
whoami
这个脚本是由一个正确配置了 sudo 的用户调用的,它会提示
root
有没有一种快速的方法来获取脚本中的实际用户,还是我必须求助于传递这个用户名的参数?
最佳答案
如果您使用 sudo su -
,
$SUDO_USER 不起作用。
它还需要多次检查 - 如果 $USER == 'root'
然后获取 $SUDO_USER
。
使用 who am i
代替命令 whoami
。这将运行为当前 session 过滤的 who
命令。它为您提供比您需要的更多信息。所以,这样做只是为了获取用户:
who am i | awk '{print $1}'
或者(更简单)您可以使用 logname
。它与上述语句的作用相同。
这将为您提供登录 session 的用户名。
无论 sudo
或 sudo su [whatever]
,这些都有效。无论 su
和 sudo
被调用多少次,它都可以工作。
https://stackoverflow.com/questions/3522341/