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

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

210782 次浏览

通过 给你

检查/dev/sole 的所有者看起来工作得很好。

stat -f "%Su" /dev/console

哇塞

剪辑

Whoami 实用程序已经被 id (1)实用程序废弃,它等价于 id -un。对于正常的交互使用,建议使用命令 id -p

我很确定 OS X 中的终端和 unix 一样,所以命令应该是:

whoami

我现在身上没有苹果电脑,所以如果我说错了,有人可以纠正我。

注意: whoami实用程序已经过时,等同于 id -un。它将为您提供当前用户

由于“ whoami”已经过时了,所以它可能更适合于前向兼容使用:

id -un

定义“活动用户”。

如果问题是“谁是登录用户”,那么“谁是我”或者“ whoami”就可以了(尽管他们给出了不同的答案——“ whoami”只报告了一个用户名; “谁是我”也报告了终端和登录时间)。

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

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

$ w
15:56:14 up 5 days, 20:58,  6 users,  load average: 0.43, 0.53, 0.50
USER     TTY        LOGIN@   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 被设计成一个多用户系统。

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

$ id -F
Andrew Havens

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

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

我通常在 晚期中使用 whoami..。

例如,在本例中,我需要它来安装 Tomcat 服务器..。

enter image description here

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

每间 man logname:

LOGNAME(1)


NAME
logname -- display user's login name

您也可以从环境变量中检索它,但这可能不安全,所以我将采用 Andrew 的答案。

printenv USER

如果您需要从应用程序(如 Node)检索它,那么从环境变量(如

process.env.USER.

有两种方法

whoami

或者

echo $USER