どちらの場合も、同じ視覚的な手がかりを生成しPS1='\\ $ '
ます。PS1='\\\\ $ '
\ $
なぜ?これはバグですか、それとも文書化された動作ですか?
bash 5.2.021とダッシュ0.5.12でテストされました。私はbashでのみ観察しましたが、ダッシュでは観察しませんでした。
答え1
悪いキャッチではありません。これはバグのようです。プロンプト文字列のデコードpars.yから
PROMPTINGセクションには、man bash
これが\\
バックスラッシュとして扱われるという内容が記載されています。したがって、\\\\
2つのバックスラッシュ文字で処理する必要がありますが、ある時点ではプロンプト文字列のデコードバックスラッシュをマージする別の関数を呼び出して、2つのバックスラッシュ文字を1つにマージします。つまり、4つの連続バックスラッシュがPS1
1にマージされます(もちろん、コードのロジックが同じままである限り)。
2つの連続したバックスラッシュを印刷するようにプロンプトを表示するには、2〜4個のバックスラッシュ(PS1='\\\\\\ $ '
または)を追加する必要があります。PS1='\\\\\\\\ $ '
次のコマンドを使用して、誤った要求を開くことができます。bashbug
ツール(Bashのバグをメンテナに報告するユーティリティ)。