如果我創建腳本/root/bin/whoami.sh conatining稱爲bash腳本:識別用戶通過須藤
#!/bin/bash
whoami
而且這個腳本是由用戶與正確配置sudo的調用,它將表明
root
有一個快速的方法來獲得在腳本的實際用戶,否則我將不得不訴諸沿此用戶名傳遞參數?
TIA, 伯特
如果我創建腳本/root/bin/whoami.sh conatining稱爲bash腳本:識別用戶通過須藤
#!/bin/bash
whoami
而且這個腳本是由用戶與正確配置sudo的調用,它將表明
root
有一個快速的方法來獲得在腳本的實際用戶,否則我將不得不訴諸沿此用戶名傳遞參數?
TIA, 伯特
我覺得$SUDO_USER是有效的。
#!/bin/bash
echo $SUDO_USER
whoami
奇,系統就real and effective UIDs區別,但我找不到任何程序,這個出口在外殼的水平。
如果您正在使用sudo su -
$ SUDO_USER不起作用。
它還需要多次檢查 - 如果$USER == 'root'
然後得到$SUDO_USER
。
而不是命令whoami
使用who am i
。這將運行爲當前會話過濾的who
命令。它給你比你需要更多的信息。那麼,這樣做是爲了得到公正的用戶:
who am i | awk '{print $1}'
或者(和更簡單),你可以使用logname
。它與上述說法完全相同。
這會爲您提供登錄到會話的用戶名。
這些工作不管sudo
或sudo su [whatever]
。無論調用多少次su
和sudo
,它也可以工作。
是的,+1,'我是我'是這裏的答案。 – 2012-10-01 14:26:29
替代'我是誰'是誰'媽媽喜歡'。你的選擇。 – wchargin 2014-08-31 20:36:28
'誰'爲我返回兩行,都包含我的名字,'我是誰'沒有返回。任何幫助? – 2014-09-23 20:55:00
這裏是如何讓誰調用的腳本不管人的用戶名,如果須藤與否:
if [ $SUDO_USER ]; then user=$SUDO_USER; else user=`whoami`; fi
或較短的版本
[ $SUDO_USER ] && user=$SUDO_USER || user=`whoami`
甚至更短:'user = $ {SUDO_USER: - $(whoami)}'或['user = $(logname)'](http://stackoverflow.com/a/4597929/321973) – 2013-02-06 12:08:37
who am i | awk '{print $1}'
並沒有對我的工作但 who|awk '{print $1}'
將服務
奇怪的事情:'sudo env'顯示'SUDO_USER',但'sudo echo $ SUDO_USER'什麼都不打印... – Job 2010-08-19 13:54:20
打電話給sudo時@Job?因爲它沒有任何意義,否則... – 2010-08-19 13:56:17
工作,這並不奇怪,它的預期。在'sudo echo $ SUDO_USER'中,bash在**執行sudo之前正在評估$ SUDO_USER **。嘗試在此解決方案中發佈的腳本,它的工作原理。 – 2010-08-19 13:57:00