谁,whoami,和“我是谁”

A. *_*her 8 who whoami

我可以理解命令whowhoami,但是当我输入时到底发生了什么:

who am i
Run Code Online (Sandbox Code Playgroud)

who am
Run Code Online (Sandbox Code Playgroud)

我在 Ubuntu 上,在他们之后没有任何反应!

为什么 Linux / UNIX 不回复错误消息(“未知参数”行中的内容who),或者只回复 的输出who

Ste*_*itt 6

如果whoami不输出任何内容,则可能表明您的 shell 不是登录 shell。没有用户与who的标准输入相关联,因此who不输出任何内容 - 就其而言,这不是错误,因此它不会输出错误消息。

如果你跑

xterm -ls
Run Code Online (Sandbox Code Playgroud)

要使用登录外壳打开终端,您应该会找到whoamiwho am i正常工作。使用例如SSH的远程登录也是如此。


ImH*_*ere 6

当你输入:

$ who am i
Run Code Online (Sandbox Code Playgroud)

在 shell(任何 shell)中,第一个单词 ( who) 被解析为“命令”。
因此,在 PATH 中搜索谁,在找到之后,所有其他参数/​​单词/参数都作为参数提供给命令。

who解释参数是工作。

实际上,在 linux 中,who手册中有关于“我是我”的说法:

如果给定 ARG1 ARG2,则假定 -m:“我是我”或“妈妈喜欢”是常见的。

因此,此类who将仅打印“与标准输入关联的主机名和用户”(-m选项)。

如果没有与标准输入关联的用户,则不打印任何内容。