시스템을 시작하고 로그인한 후(X를 시작하기 전에 startx를 통해 수동으로 시작했습니다) 명령을 입력하면 갑자기 다음과 같은 출력이 표시됩니다.
$ cmd
;user@host: cmd;cmd;cmd;
[output of 'cmd']
$
이는 X를 시작하고 터미널을 시작한 후에 중지됩니다. X를 종료한 후 일반 TTY에서 다시 발생합니다.
저는 현재 zsh와 "oh-my-zsh"를 사용하고 있습니다. 그것은 그곳에서만 발생하며 bash를 사용할 때는 발생하지 않으며 사용자 이름 앞에 세미콜론만 있습니다.
여기서 무슨 일이 일어나고 있고 그것을 피하는 방법을 아는 사람이 있습니까?
답변1
구성은 zsh
명령을 호출하기 전에 제목 표시줄이나 사용하는 터미널 응용 프로그램을 설정하는 것입니다. xterm
터미널에서 가로채는 이스케이프 시퀀스를 인쇄하여 이를 수행합니다. 불행하게도 터미널 에뮬레이터만이 이 순서를 이해하며 콘솔에 있을 때 쓰레기만 보게 될 것입니다.
zsh
이를 수행하거나 수행하지 않도록 구성하려면 사전 실행 후크를 적절하게 설정하십시오.
참고로 제가 발췌한 내용은 다음과 같습니다 .zshrc
.
if [[ $TERM == "xterm" ]]; then
if [[ -n $SSH_TTY ]]; then
precmd () { print -Pn "\033]0;$HOST: %~\007" }
preexec () { print -n "\033]0;$HOST: $1\007" }
else
precmd () { print -Pn "\033]0;%~\007" }
preexec () { print -n "\033]0;$1\007" }
fi
fi
외부는 if
X 내부에서만 precmd 및 preexec 후크를 설정하도록 보장합니다.