我可以理解命令who
和whoami
,但是当我输入时到底会发生什么:
who am i
和
who am
我在 Ubuntu 上,之后没有任何反应!
为什么 Linux / UNIX 不回复错误消息(关于 的“未知参数”行的内容who
),或者只回复 的输出who
?
答案1
如果whoami
没有输出任何内容,则可能表明您的 shell 不是登录 shell。没有与who
的标准输入关联的用户,因此who
不会输出任何内容 - 就其而言,这不是错误,因此它不会输出错误消息。
如果你跑
xterm -ls
要使用登录 shell 打开终端,您应该会找到它whoami
并且who am i
工作正常。使用远程登录也是如此例如SSH。
答案2
当您输入:
$ who am i
在 shell(任何 shell)中,第一个单词 ( who
) 被解析为“命令”。
因此,在 PATH 中搜索 who,找到后,所有其他参数/单词/参数都作为参数提供给命令。
who
解释论点是我们的工作。
事实上,在linux中,世界卫生组织手册关于“我是”有这样的说法:
如果给出 ARG1 ARG2,则 -m 假定:“我是”或“妈妈喜欢”是常见的。
因此,这样who
只会打印“与 stdin 关联的主机名和用户”(-m
选项)。
如果没有与 stdin 关联的用户,则不会打印任何内容。