在由sudo调用的bash脚本中识别用户

如果我创build脚本/root/bin/whoami.sh conatining:

#!/bin/bash whoami 

而这个脚本是由一个用户使用正确configuration的sudo来调用的,它会指示

 root 

有一个快速的方式来获得脚本中的实际用户,或者我将不得不求助于传递这个用户名的参数?

TIA,Bert

如果您使用sudo su - $ SUDO_USER不起作用。
它还需要多次检查 – 如果$USER == 'root'则获得$SUDO_USER

而不是命令whoami使用who am i 。 这将运行为当前会话过滤的who命令。 它给你比你需要更多的信息。 所以,这样做才能得到用户:

 who am i | awk '{print $1}' 

另外(更简单),你可以使用logname 。 它和上面的说法是一样的。

这给你login到会话的用户名。

这些工作不pipesudosudo su [whatever] 。 不pipe有多less次susudo被调用,它也可以工作。

我认为$ SUDO_USER是有效的。

 #!/bin/bash echo $SUDO_USER whoami 

这里是如何获得调用脚本的人的用户名,不pipe是否sudo:

 if [ $SUDO_USER ]; then user=$SUDO_USER; else user=`whoami`; fi 

或更短的版本

 [ $SUDO_USER ] && user=$SUDO_USER || user=`whoami` 

who am i | awk '{print $1}' who am i | awk '{print $1}'不适用于我,但是who|awk '{print $1}'将会提供这个工作

奇怪的是,系统确实区分真实和有效的UID ,但是我不能find在shell级别输出这个程序的程序。

尝试:
id -urn