Sobre o comando 'who' e sua saída em '14 .04 TrustyTahr '

9

Tenho uma pergunta que surgiu em minha mente após a atualização para o 14.04 TrustyTahr do 12.04 PrecisePangolin. A questão refere-se ao comando 'who' e sua saída. Nas edições anteriores do Ubuntu, na saída, o comando who lia qual tty foi usado para efetuar login e iniciar o sistema e o lightdm, por exemplo:

:~$ who
geo      tty7     thedate (:0)
geo      pts/n    thedate (:0.0)

Mas no 14.04 TrustyTahr, quando executo o comando who, minha saída gera:

:~$ who
geo      :0       thedate (:0)
geo      pts/n    thedate (:0.0)

Em ambas as edições, o handoff vt7 está ocorrendo em / boot e, no TrustyTahr, minha variável XDG_VTNR é 7 quando eu faço login via lightdm; mas tty7, nem vt7 são impressos no arquivo utmp. Isso me incomodou por meses, finalmente escrevi um programa c ++, que incorpora a função popen, como um complemento ao comando who para que o comando who exiba o XDG_VTNR atual com um coeficiente tty, por exemplo:

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

No entanto, por que isso mudou? E também é minha a única assim, porque eu baixei isso em maio do ano passado, e eu posso ter um iso de beliche ou algo assim, toda vez que eu corro o comando who, isso me faz pensar naquela música dos Beastie Boys: Sabotage (jk não é ruim).

oOpSgEo
fonte
Estou em 14.04. Agora eu fui para o tty1 e corri startx $(which gnome-shell). A saída dos whorelatórios tty1 e: 0. Eu acho que sua máquina em particular está enfrentando algum tipo de erro #
Sergiy Kolodyazhnyy 4/15/16
atualize a pergunta com $ who --version
j0h

Respostas:

2

Tente atualizar o pacote que contém o whocomando; mesmo se você usou uma versão estranha da ISO para instalar a partir, uma atualização deve substituí-la:

Descubra qual pacote possui who:

which who    # find out where 'who' binary is
dpkg -S /path/to/who

Então:

apt-get update
apt-get install <package name from dpkg -S command>

Se ainda assim não funcionar, tente um shell diferente sem ambiente (para se livrar de quaisquer variáveis ​​de ambiente instáveis, configurações, lixo específico do bash etc.):

env -i /bin/dash
$ who

Se funcionar em um shell simples, o problema provavelmente será uma definição estranha de alias em um bashrc ou algo semelhante.

Além disso, who --allfunciona?

Felix
fonte