wer, whoami und "wer bin ich"

7

Ich kann die Befehle verstehen whound whoami, aber was genau passiert, wenn ich tippe:

who am i

und

who am

Ich bin auf Ubuntu, nichts passiert nach ihnen!

Warum antwortet Linux / UNIX nicht mit einer Fehlermeldung (etwas in der Zeile "unbekannte Argumente" für who) oder nur mit der Ausgabe von who?

Ein weiterer
quelle

Antworten:

5

Wenn whoaminichts ausgegeben wird, zeigt dies wahrscheinlich an, dass Ihre Shell keine Login-Shell ist. Es ist kein Benutzer mit whoder Standardeingabe verknüpft , daher whowird nichts ausgegeben. Dies ist kein Fehler, daher wird keine Fehlermeldung ausgegeben.

Wenn du läufst

xterm -ls

Um ein Terminal mit einer Login-Shell zu öffnen, sollten Sie das finden whoamiund gut who am ifunktionieren. Gleiches gilt für eine Remote-Anmeldung mit zB SSH.

Stephen Kitt
quelle
Sie können den loginBefehl auch vor der Ausgabe verwenden whoami, who am ioder who mom likesusw., es scheint viel mehr Variationen in den Argumenten zu geben ;-).
Thecarpy
4

Wenn Sie Folgendes eingeben:

$ who am i

In einer Shell (einer beliebigen Shell) wird das erste Wort ( who) als "Befehl" analysiert.
Also, wer im PATH gesucht wird und nachdem es gefunden wurde, werden alle anderen Parameter / Wörter / Argumente dem Befehl als Argumente übergeben.

Es ist die Aufgabe who, die Argumente zu interpretieren.

In der Tat, unter Linux, das Handbuch, wer dies über 'bin ich' zu sagen hat:

Wenn ARG1 ARG2 gegeben ist, wird -m vermutet: 'bin ich' oder 'Mutter mag' sind üblich.

Daher whowird nur "Hostname und Benutzer, die mit stdin verknüpft sind" ( -mOption) gedruckt .

Wenn stdin kein Benutzer zugeordnet ist, wird nichts gedruckt.

Isaac
quelle
1

Replikation nicht möglich:

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
DopeGhoti
quelle