从 12.04 PrecisePangolin 升级到 14.04 TrustyTahr 后,我脑海中出现了一个问题。该问题与“who”命令及其输出有关。在以前的 Ubuntu 版本中,who 命令的输出将读取用于登录和启动系统和 lightdm 的 tty,例如:
:~$ who
geo tty7 thedate (:0)
geo pts/n thedate (:0.0)
但是在 14.04 TrustyTahr 上,当我运行 who 命令时,我的输出结果为:
:~$ who
geo :0 thedate (:0)
geo pts/n thedate (:0.0)
在两个版本中,vt7 切换都发生在 /boot 中,而在 TrustyTahr 上,当我通过 lightdm 登录时,我的 XDG_VTNR 变量为 7;但 tty7 和 vt7 都没有打印到 utmp 文件中。这让我烦恼了好几个月,我终于写了一个 c++ 程序,其中包含了 popen 函数,作为 who 命令的补充,以便 who 命令能够使用 tty 系数显示当前的 XDG_VTNR,例如:
geo tty7 2015-06-04 20:54 (:0)
geo pts/0 2015-06-04 20:54 (:0.0)
尽管如此,为什么会这样?而且我的也是这样吗?因为我是在去年 5 月左右下载的,我可能得到了一个 bunk iso 或类似的东西,每次我运行 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>
如果仍然不起作用,请尝试使用没有环境的其他 shell(以摆脱任何不稳定的环境变量、设置、特定于 bash 的垃圾等):
env -i /bin/dash
$ who
如果它在裸壳中工作,那么问题很可能是 bashrc 中的奇怪的别名定义,或者类似的东西。
另外,who --all
有用吗?