Über den 'who'-Befehl und seine Ausgabe auf '14 .04 TrustyTahr'

9

Ich habe eine Frage, die mir nach dem Upgrade auf 14.04 TrustyTahr von 12.04 PrecisePangolin in den Sinn kam. Die Frage bezieht sich auf den Befehl 'who' und dessen Ausgabe. In früheren Ausgaben von Ubuntu hat der Befehl who gelesen, welche tty zum Anmelden und Initiieren des Systems und von lightdm verwendet wurde, zum Beispiel:

:~$ who
geo      tty7     thedate (:0)
geo      pts/n    thedate (:0.0)

Aber am 14.04 TrustyTahr, wenn ich den who-Befehl ausführe, ergibt meine Ausgabe:

:~$ who
geo      :0       thedate (:0)
geo      pts/n    thedate (:0.0)

In beiden Editionen findet die Übergabe von vt7 in / boot statt, und in TrustyTahr ist meine Variable XDG_VTNR 7, wenn ich mich über lightdm anmelde. aber tty7, noch vt7 wird in die utmp-Datei gedruckt. Das ärgerte mich monatelang, ich schrieb schließlich ein C ++ - Programm, das die Popen-Funktion als Ergänzung zum who-Befehl enthält, damit der who-Befehl den aktuellen XDG_VTNR mit einem tty-Koeffizienten anzeigt, z.

geo      tty7         2015-06-04 20:54 (:0)
geo      pts/0        2015-06-04 20:54 (:0.0)

Trotzdem, warum hat sich das geändert? Und auch meine ist die einzige davon, weil ich sie im Mai letzten Jahres heruntergeladen habe und vielleicht eine Kojen-Iso oder so bekommen habe. Jedes Mal, wenn ich den Who-Befehl ausführe, denke ich an diesen Song von Beastie Boys: Sabotage (jk es ist nicht schlecht).

oOpSgEo
quelle
Ich bin am 14.04. Gerade ging ich zu tty1 und rannte los startx $(which gnome-shell). Die Ausgabe von whotty1 und: 0. Ich denke, Ihre spezielle Maschine hat einen Fehler
Sergiy Kolodyazhnyy
Aktualisieren Sie die Frage mit $ who --version
j0h

Antworten:

2

Versuchen Sie, das Paket zu aktualisieren, das den whoBefehl enthält . Selbst wenn Sie eine seltsame Version der ISO zum Installieren verwendet haben, sollte diese durch ein Update ersetzt werden:

Finden Sie heraus, welches Paket gehört who:

which who    # find out where 'who' binary is
dpkg -S /path/to/who

Dann:

apt-get update
apt-get install <package name from dpkg -S command>

Wenn es immer noch nicht funktioniert, versuchen Sie es mit einer anderen Shell ohne Umgebung (um alle wackeligen Umgebungsvariablen, Setups, Bash-spezifischen Junk usw. zu entfernen):

env -i /bin/dash
$ who

Wenn es in einer nackten Shell funktioniert, liegt das Problem wahrscheinlich an einer seltsamen Alias-Definition in einem Bashrc oder ähnlichem.

Funktioniert auch who --all?

Felix
quelle