关于 'who' 命令及其在 '14.04 TrustyTahr' 上的输出

关于 'who' 命令及其在 '14.04 TrustyTahr' 上的输出

从 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有用吗?

相关内容