PS1='\\$' と PS1='\\\\$' は bash で同じです。

PS1='\\$' と PS1='\\\\$' は bash で同じです。

どちらの場合も、同じ視覚的な手がかりを生成しPS1='\\ $ 'ます。PS1='\\\\ $ '\ $

なぜ?これはバグですか、それとも文書化された動作ですか?

bash 5.2.021とダッシュ0.5.12でテストされました。私はbashでのみ観察しましたが、ダッシュでは観察しませんでした。

答え1

悪いキャッチではありません。これはバグのようです。プロンプト文字列のデコードpars.yから

PROMPTINGセクションには、man bashこれが\\バックスラッシュとして扱われるという内容が記載されています。したがって、\\\\2つのバックスラッシュ文字で処理する必要がありますが、ある時点ではプロンプト文字列のデコードバックスラッシュをマージする別の関数を呼び出して、2つのバックスラッシュ文字を1つにマージします。つまり、4つの連続バックスラッシュがPS11にマージされます(もちろん、コードのロジックが同じままである限り)。

2つの連続したバックスラッシュを印刷するようにプロンプ​​トを表示するには、2〜4個のバックスラッシュ(PS1='\\\\\\ $ 'または)を追加する必要があります。PS1='\\\\\\\\ $ '

次のコマンドを使用して、誤った要求を開くことができます。bashbugツール(Bashのバグをメンテナに報告するユーティリティ)。

関連情報