システムを起動してログインした後(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 フックを設定することを保証します。