從 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)
儘管如此,為什麼會發生這種變化呢?而且我的也是唯一一個這樣的,因為我在去年五月左右下載了這個,而且我可能已經得到了一個舖位iso 或其他東西,每次我運行who 命令時,它都會讓我想起Beastie Boys 的歌曲:Sabotage (jk這還不錯)。
答案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
作用嗎?