在由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到会话的用户名。
 这些工作不pipesudo或sudo su [whatever] 。 不pipe有多less次su和sudo被调用,它也可以工作。 
我认为$ 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