bashスクリプトはウィンドウタイトルエスケープ文字のサポートをどのように検出しますか?

bashスクリプトはウィンドウタイトルエスケープ文字のサポートをどのように検出しますか?

bashには、コマンドが入力されるたびに実行されるデバッグトラップがあります。これは、実行中のコマンドを示すためにウィンドウのタイトルを設定します。すべての構成の詳細を省略し、次のように整理しました。

export PS1="\[\e]0;$GENERATED_WINDOW_TITLE\a\]$GENERATED_PROMPT"

これは非常にうまく機能しますが、1つの問題があります。 bashシェルがこの機能をサポートしていない環境で実行されると、GENERATED_WINDOW_TITLEはすべてのプロンプトで画面に印刷されます。 X以外の端末でbashを実行するたびにこれが発生します。

bashはこのエスケープシーケンスがサポートされていることをどのように確認しますか?

ベストアンサー1

私はこれを行うことができるterminfo関数がないと思います。実際にテストされた値は十分でなけれTERMばなりません。これは私が.bashrc両方でしたことであり、.zshrcこれが問題になっていたことを覚えていません。

case $TERM in
  (|color(|?))(([Ekx]|dt|(ai|n)x)term|rxvt|screen*)*)
    PS1=$'\e\]0;$GENERATED_WINDOW_TITLE\a'"$PS1"
esac

おすすめ記事