フォローするUnixシステム投稿して行を追加しました。
trap 'echo -ne "\033]0;$BASH_COMMAND\007"' DEBUG
私の.bashrc
ファイルに入れて、最後のコマンドを端末のタイトルに設定します。私のUbuntuデスクトップではうまくいきます。
この行を Centos サーバー上の.bashrc
ファイルに追加し、Centos システムに ssh を追加すると動作しなくなります。 SSHクライアントヘッダーは空白になり、すべてのコマンドの後、すべてのゴミが自分のコンソールに印刷されます。
Last login: Sun Jun 7 21:28:29 2015 from sk-box
]2;printf "k%s@%s:%s]0;printf "k%s@%s:%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"[root@sk-vbox ~]# cd
]2;printf "k%s@%s:%s]0;printf "k%s@%s:%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"[root@sk-vbox ~]# pwd
/root
]2;printf "k%s@%s:%s]0;printf "k%s@%s:%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"[root@sk-vbox ~]#
SSHを使用して動的ヘッダーを正しく機能させることはできますか?
答え1
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"' trap 'echo -ne "\033]0;$BASH_COMMAND\007"' DEBUG
これら2つのコマンドは互いに干渉します。以前に実行されたコマンドの代わりにBASH_COMMAND
最終的に含まれます。ヘッダーテキストの閉じたタグであるバックスラッシュ拡張ベル文字が含まれているため、PROMPT_COMMAND
結果は非常に混乱しています。プロンプトの前に文字列が表示され、2番目のものを印刷すると着信音が鳴ります。また、.NETで追加レベルのバックスラッシュ拡張を実行しています。PROMPT_COMMAND
\007
PROMPT_COMMAND
\007
BASH_COMMAND
DEBUGトラップを特殊文字を印刷しないより強力なトラップに置き換えます。
trap 'printf "\033]0;%s\007" "${BASH_COMMAND//[^[:print:]]/}"' DEBUG