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