who
とコマンドを理解できますが、whoami
次のように入力すると正確に何が起こりますか?
who am i
そして
who am
私はUbuntuにいて、その後は何も起こりません!
Linux / UNIXがエラーメッセージ(「不明なパラメータ」行の内容についてwho
)で応答しないのか、出力で応答しないのですかwho
?
答え1
何も出力されない場合は、whoami
シェルがログインシェルではないことを意味します。who
の標準入力に関連付けられたユーザーがないため、who
何も出力されません。これはエラーではないため、エラーメッセージを出力しません。
走れば
xterm -ls
ログインシェルを使用して端末を開くには、端末を見つけて正しくwhoami
機能する必要がありますwho am i
。リモートログインを使用している場合も同様です。例えばSSH。
答え2
入力するとき:
$ who am i
シェル(すべてのシェル)では、最初の単語(who
)は「コマンド」として解析されます。
したがって、PATHで誰が検索され、見つかったら、他のすべてのパラメータ/単語/パラメータがコマンドの引数として提供されます。
who
主張を説明することが私たちの使命です。
実際、Linuxでは世界保健機関ハンドブック「私は」についてこのような言葉があります。
ARG1 ARG2が与えられると、-mは「I am」または「Mom likes」が一般的であると仮定します。
したがって、who
「stdinに関連付けられているホスト名とユーザー」(-m
オプション)のみが印刷されます。
stdinに関連付けられているユーザーがなければ、何も印刷されません。