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 명령이 tty 계수와 함께 현재 XDG_VTNR을 표시하도록 하기 위해 who 명령에 대한 보충으로 popen 함수를 통합하는 C++ 프로그램을 작성했습니다.
geo tty7 2015-06-04 20:54 (:0)
geo pts/0 2015-06-04 20:54 (:0.0)
그럼에도 불구하고 왜 이렇게 바뀌었을까? 그리고 그런 것은 내 것뿐인데, 작년 5월쯤에 이것을 다운로드했고, 벙크 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>
그래도 작동하지 않으면 환경이 없는 다른 셸을 사용해 보십시오(불안정한 환경 변수, 설정, bash 관련 정크 등을 제거하기 위해).
env -i /bin/dash
$ who
베어 셸에서 작동한다면 문제는 bashrc의 이상한 별칭 정의 또는 이와 유사한 것일 가능성이 높습니다.
또한 who --all
작동합니까?