2009-07-09 92 views

回答

78

为“WHOAMI”已过时,它可能更向前兼容使用:

id -un 
+1

什么意思是'whoami'过时了?谁宣布它过时了? – 2009-07-09 16:46:28

+3

类型'man whoami' – kent 2009-07-09 16:49:01

6

通过here

检查的/ dev/console的拥有者似乎运作良好。

stat -f "%Su" /dev/console

+0

如果你ssh'ed到一台机器,并希望看到如果用户在本地登录这个伟大的工程。如果不是,该命令将返回“root”。 – 2016-01-15 01:17:47

7

whoami

EDIT

的WHOAMI效用已经由ID(1)工具废弃,并且等同于id -un。建议使用id -p命令进行正常的交互式使用。

4

我敢肯定,在OS X中的终端就像UNIX,所以命令为:

whoami 

我不会对我的Mac此刻,如果我这样的人指正错了。

+0

是的,OSX 10.5是(最后)一个完全合格的Unix。 – kent 2009-07-09 17:09:52

0

定义“活跃用户”。如果问题是'谁是登录用户',那么'我是谁'或'whoami'是好的(虽然他们给出了不同的答案 - 'whoami'只报告用户名;'我是谁'报告终端和登录时间)。

如果问题是'哪个用户ID是shell的有效ID',那么通常最好使用'id'。这会报告真实有效的用户ID和组ID以及补充组ID。如果shell运行SUID或SGID,这可能很重要。

1

如果你想知道谁是当前登录到系统:

 
$ w 
15:56:14 up 5 days, 20:58, 6 users, load average: 0.43, 0.53, 0.50 
USER  TTY  [email protected] IDLE JCPU PCPU WHAT 
me  pts/2  Fri19 1:03m 0.98s 0.98s -/bin/bash 
me  pts/3  09:55 6:00m 0.43s 0.43s /bin/bash 
me  pts/5  15:56 0.00s 0.23s 0.00s w 

(这是从Linux系统;在OS X上的格式可能会略有不同,但这些信息应该是差不多的)

可能有多个登录会话;毕竟,UNIX被设计为一个多用户系统。

12

如果你想显示的全名(而不是用户名),加上-F标志:

$ id -F 
Andrew Havens 
0

的问题还没有完全回答,恕我直言。我会试着解释一下:我有一个crontab条目,用于安排bash shell命令过程,这反过来会对我的文件进行一些清理;并在完成后,使用OS X通知中心(使用命令osascript -e 'display notification ...)向我发送通知给我。如果有人(例如我的妻子或我的女儿)将计算机的当前用户切换到她,将我留在后台,发送通知时,cron脚本失败

所以,谁是当前用户意味着具有其他的一些人成为有效用户留下我在后台?是否stat -f "%Su" /dev/console返回当前活动用户名称?

答案是肯定的;所以,现在我的crontab shell脚本已被修改以下列方式:

... 
if [ "$(/usr/bin/stat -f ""%Su"" /dev/console)" = "loreti" ] 
then /usr/bin/osascript -e \ 
    'display notification "Cleanup done" sound name "sosumi" with title "myCleanup"' 
fi 
相关问题