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 who
Befehl 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 --all
es?