linux - 在 sudo 调用的 Bash 脚本中识别用户

如果我创建脚本 /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 的用户名。

无论 sudosudo su [whatever],这些都有效。无论 susudo 被调用多少次,它都可以工作。

https://stackoverflow.com/questions/3522341/

相关文章:

python - "inconsistent use of tabs and spaces in i

c - 从C中的文件描述符中检索文件名

python - Python 'for' 循环中的范围

python - 将 datetime 转换为 Unix 时间戳并将其转换回 python

python - 如何将 NumPy 数组标准化为单位向量?

linux - 如何在行号处拆分文件

python - Python 中嵌套的 try/except block 是一种好的编程习惯吗?

c - 硬 float 和软 float 有什么区别?

linux - grep 排除多个字符串

python - Python 中的 '@=' 符号是什么?