PS1のような変数では\ 033エスケープが機能しますが、\ x 1bでは機能しないのはなぜですか?

PS1のような変数では\ 033エスケープが機能しますが、\ x 1bでは機能しないのはなぜですか?

echo組み込み文書によるとprintf\033とは\x1bすべて同じASCII制御コード(Esc、10進数27)に変換する必要があります。

単純なコマンド\x1bと同じように動作しますが、プロンプト変数(たとえば、Why?)では互いに置き換えて使用することはできません。\033echo -ePS1

ベストアンサー1

Bashにはこれを解釈できる条項がないからです。図からわかるようにヒントマニュアルページのセクションでは、bash(1)任意の文字に対して8進数のエスケープのみが許可されています。

についてはなぜこの欠落が存在し、POSIX shとの互換性のためであると推測できますが、Bash FAQバージョン4.12でもまだこのトピックを扱っていないため、Chet Rameyに直接連絡する必要があります。

おすすめ記事