如何通过OS X中的命令行获取活动用户的名称?


Answers:


194

由于“ whoami”已过时,因此使用起来可能更向前兼容:

id -un

2
“ whoami”在什么意义上被淘汰?谁宣布它已过时?
乔纳森·莱夫勒

2
@Jonathan:whoamiLeopard上的手册页确认已被替换id
Naaff

啊!他们为什么要改变自从黎明以来一直存在的东西?
dmckee ---前主持人小猫

28
谁说?<悬臂chacka>
肯特

27

如果要显示全名(而不是用户名),请添加-F标志:

$ id -F
Andrew Havens

1
-F是Mavericks中的非法选项-这是什么时候第一次开始起作用的?
Eli B.

11

我是谁

编辑

whoami实用程序已被id(1)实用程序淘汰,它等效于id -unid -p建议该命令用于常规交互使用。


10

通过这里

检查/ dev / console的所有者似乎运行良好。

stat -f "%Su" /dev/console


1
如果将您放入某台计算机并想查看用户是否在本地登录,这将非常有用。如果不是,则命令将返回“ root”。
蒂姆·迪尔伯恩

9

我很确定OS X中的终端就像Unix,所以命令是:

whoami

我目前没有Mac,因此如果我错了,请有人纠正我。

注意-该whoami实用程序已过时,等效于id -un。它会给你当前的用户


4

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

$ w
 15:56:14最多5天,20:58,6个用户,平均负载:0.43,0.53,0.50
用户TTY登录@空闲JCPU PCPU什么
me pts / 2 Fri19 1:03m 0.98s 0.98s-/ bin / bash
我pts / 3 09:55 6:00m 0.43s 0.43s / bin / bash
我pts / 5 15:56 0.00s 0.23s 0.00sw

(这是来自Linux系统; OS X上的格式可能略有不同,但是信息应该大致相同。)

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


4

您也可以使用lognameLinux或MacOS下的BSD通用命令手册中的命令来查看当前登录用户的用户名,即使该用户正在执行sudo操作。例如,这在使用sudo安装系统范围的软件包时修改用户的crontab时非常有用:crontab -u $(logname)

man logname

LOGNAME(1)

NAME
    logname -- display user's login name

1
这绝对是最干净,最简单的解决方案。无论什么用户正在执行命令,它都有效。
Maxime Viargues

2

恕我直言,这个问题尚未完全回答。我将尝试解释:我有一个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

2

MAC终端中获取用户名很容易...

我一般用whoami终端 ...

例如,在这种情况下,我需要安装Tomcat服务器 ...

在此处输入图片说明



1

您也可以从环境变量中检索它,但这可能并不安全,因此我会回答安德鲁的答案。

printenv USER

如果您需要从诸如Node之类的应用中检索它,则可以从环境变量(例如:

process.env.USER


1

定义“活动用户”。

如果问题是“谁是登录用户”,那么“我是谁”或“ whoami”就可以了(尽管他们给出了不同的答案-“ whoami”仅报告用户名;“ whoami”在终端上报告,并且登录时间也是如此)。

如果问题是“哪个用户ID是外壳程序的有效ID”,那么通常最好使用“ id”。这将报告真实和有效的用户ID和组ID,以及补充组ID。如果外壳程序正在运行SUID或SGID,则这可能很重要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.