У меня возник вопрос после обновления до 14.04 TrustyTahr с 12.04 PrecisePangolin. Вопрос касается команды who и ее вывода. В предыдущих редакциях Ubuntu вывод команды who читал, какой tty использовался для входа в систему и инициализации системы и lightdm, например:
:~$ who
geo tty7 thedate (:0)
geo pts/n thedate (:0.0)
Но на TrustyTahr 14.04, когда я запускаю команду who, мой вывод дает:
:~$ who
geo :0 thedate (:0)
geo pts/n thedate (:0.0)
В обоих изданиях передача vt7 происходит в /boot, а в TrustyTahr моя переменная XDG_VTNR равна 7, когда я вхожу через lightdm; но tty7, ни vt7 не печатаются в файле utmp. Это раздражало меня месяцами, и я наконец написал программу на c++, которая включает функцию popen в качестве дополнения к команде who, чтобы команда who отображала текущий XDG_VTNR с коэффициентом tty, например:
geo tty7 2015-06-04 20:54 (:0)
geo pts/0 2015-06-04 20:54 (:0.0)
Тем не менее, почему это изменилось? И еще, у меня только одно такое, потому что я скачал его где-то в мае прошлого года, и, возможно, получил какой-то хлам или что-то в этом роде, каждый раз, когда я запускаю команду who, мне вспоминается песня Beastie Boys: Sabotage (шутка, она не плохая).
решение1
Попробуйте обновить пакет, содержащий who
команду; даже если вы использовали странную версию ISO для установки, обновление должно заменить ее:
Узнайте, какой пакет принадлежит who
:
which who # find out where 'who' binary is
dpkg -S /path/to/who
Затем:
apt-get update
apt-get install <package name from dpkg -S command>
Если это все еще не работает, попробуйте другую оболочку без среды (чтобы избавиться от любых неисправных переменных среды, настроек, специфичного для bash мусора и т. д.):
env -i /bin/dash
$ who
Если это работает в голой оболочке, то проблема, скорее всего, в странном определении псевдонима в bashrc или в чем-то подобном.
И who --all
работает ли?