web-dev-qa-db-ja.com

who、whoami、および「who am i」

コマンドwhowhoamiは理解できますが、入力すると正確に次のようになります。

who am i

そして

who am

私はUbuntuを使用していますが、その後は何も起こりません!

Linux/UNIXがエラーメッセージ(whoの「不明な引数」の行にあるもの)で応答しない、または単にwhoの出力で応答しないのはなぜですか?

7
A. N. Other

whoamiが何も出力しない場合は、シェルがログインシェルではないことを示している可能性があります。 whoの標準入力に関連付けられているユーザーはいないため、whoは何も出力しません。これは、関係がない限りエラーではないため、エラーメッセージは出力されません。

走れば

xterm -ls

ログインシェルでターミナルを開くには、whoamiおよびwho am i正常に動作します。同じことがe.g。 SSHを使用したリモートログインにも当てはまります。

5
Stephen Kitt

入力すると:

$ who am i

シェル(任意のシェル)では、最初のワード(who)は「コマンド」として解析されます。
したがって、PATHで検索された人、およびそれが見つかった後、他のすべてのパラメーター/単語/引数が引数としてコマンドに渡されます。

引数を解釈するのはwhoの仕事です。

実際、Linuxでは、 manのwho は 'am i'についてこれを言っています:

ARG1 ARG2が指定されている場合、-mは「am i」または「mom likes」が通常と推定されます。

したがって、そのようなwhoは、「stdinに関連付けられているホスト名とユーザー」(-mオプション)。

Stdinに関連付けられているユーザーがいない場合、何も出力されません。

4
Isaac

複製できません:

ghoti@home:~
$ who am i
ghoti    pts/0        2017-07-10 08:33 (38.142.104.170)
ghoti@home:~
$ cat /etc/issue
Ubuntu 16.04.2 LTS \n \l
1
DopeGhoti