「14.04 TrustyTahr」での「who」コマンドとその出力について

「14.04 TrustyTahr」での「who」コマンドとその出力について

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 ファイルに出力されません。これは何ヶ月も私を悩ませましたが、最終的に、who コマンドの補足として popen 関数を組み込んだ c++ プログラムを作成し、who コマンドが tty 係数で現在の XDG_VTNR を表示できるようにしました。例:

geo      tty7         2015-06-04 20:54 (:0)
geo      pts/0        2015-06-04 20:54 (:0.0)

それにもかかわらず、なぜこれが変更されたのでしょうか? また、このような状況になっているのは私のものだけでしょうか。これは昨年の 5 月頃にダウンロードしたもので、不良 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>

それでも動作しない場合は、環境のない別のシェルを試してください(不安定な環境変数、設定、bash 固有のジャンクなどを取り除くため)。

env -i /bin/dash
$ who

ベアシェルで動作する場合、問題はおそらく bashrc 内の奇妙なエイリアス定義、または同様のものである可能性があります。

また、who --all機能しますか?

関連情報