Answers:
根据我的Ubuntu 12.04.2手册页中的“谁”命令,“我是谁”(或有两个参数的人)与“谁-m”相同,并应为您提供与STDIN关联的主机名和用户。但是我没有输出“我是谁”。手册页错误或命令有错误。无论如何,正如ckhan先前回答的那样,“ whoami”命令将为您提供有效用户ID的用户名。至少在Ubuntu 12.04.2中,id,“我是谁”或“ whoami”中的任何一个都不会只给您在当前终端上登录的人的用户名。作为解决方法,您可以使用以下方法:
who | sed 's/ .*//'
解决方法:
ls -l `tty` | awk '{print $3}'
可以替代who am i | awk '{print $1}'
。解释如下:
在许多系统上,“ who am i
”等同于“ who -m
”。这里的问题是,对于某些终端,“ who -m
”什么也不返回!
Example#1从xfce4-terminal运行
Pegasus ~ # whoami
root
Pegasus ~ # who am i
thomas pts/1 2017-08-19 11:15 (:0.0)
Pegasus ~ # who -m
thomas pts/1 2017-08-19 11:15 (:0.0)
Pegasus ~ # who
thomas tty8 2017-08-19 10:18 (:0)
thomas pts/1 2017-08-19 11:15 (:0.0)
thomas pts/5 2017-08-19 16:16 (:0.0)
Pegasus ~ # who am i | awk '{print $1}'
thomas
Pegasus ~ #
但是示例2来自gnome终端(同一台计算机,相同的命令)
Pegasus ~ # whoami
root
Pegasus ~ # who am i
Pegasus ~ # who -m
Pegasus ~ # who
thomas tty8 2017-08-19 10:18 (:0)
thomas pts/1 2017-08-19 11:15 (:0.0)
thomas pts/5 2017-08-19 16:16 (:0.0)
Pegasus ~ #
这似乎是gnome-terminal不添加utmp条目的结果。
am
和i
不会被忽略,它们甚至由POSIX指定:“在POSIX语言环境中,将输出限制为描述调用用户,等效于该-m
选项。”