Über den 'who'-Befehl und seine Ausgabe auf '14.04 TrustyTahr'

Über den 'who'-Befehl und seine Ausgabe auf '14.04 TrustyTahr'

Ich habe eine Frage, die mir nach dem Upgrade von 12.04 PrecisePangolin auf 14.04 TrustyTahr in den Sinn kam. Die Frage bezieht sich auf den Befehl „who“ und seine Ausgabe. In früheren Ubuntu-Editionen gab der Befehl „who“ aus, welches 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 wenn ich am 14.04 TrustyTahr den Befehl who ausführe, ergibt meine Ausgabe:

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

Bei beiden Editionen erfolgt die vt7-Übergabe in /boot, und bei TrustyTahr ist meine XDG_VTNR-Variable 7, wenn ich mich über lightdm anmelde; aber weder tty7 noch vt7 werden in die utmp-Datei gedruckt. Das hat mich monatelang geärgert, bis ich schließlich ein C++-Programm geschrieben habe, 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. B.:

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 ist meines das einzige dieser Art? Ich habe es ungefähr im Mai letzten Jahres heruntergeladen und vielleicht ein defektes ISO oder so etwas bekommen. Jedes Mal, wenn ich den Befehl who ausführe, muss ich an das Lied der Beastie Boys denken: Sabotage (kleiner Scherz, es ist nicht so schlecht).

Antwort1

Versuchen Sie, das Paket zu aktualisieren, das den whoBefehl enthält. Selbst wenn Sie für die Installation eine andere ISO-Version verwendet haben, sollte diese durch ein Update ersetzt werden:

Finden Sie heraus, welches Paket besitzt 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 fehlerhaften Umgebungsvariablen, Setups, Bash-spezifischen Müll usw. loszuwerden):

env -i /bin/dash
$ who

Wenn es in einer einfachen Shell funktioniert, liegt das Problem wahrscheinlich an einer seltsamen Aliasdefinition in einer Bashrc oder etwas Ähnlichem.

Und, funktioniert who --alles?

verwandte Informationen