履歴をナビゲートすると、Bashプロンプトが壊れて表示されますか?

履歴をナビゲートすると、Bashプロンプトが壊れて表示されますか?

.bash_profileMacOSとコンテンツがあります。

export PS1="\[\e[0;31m$\]\[\e[m\] \[\e[0;32m\w\e[m\] : \]"

その結果、端末に次のようにパスワードを印刷しました。

スクリーンショット

ただし、端末履歴を使用するために上下矢印を押すとエラーが発生します。

ここに画像の説明を入力してください。

ベストアンサー1

  1. PS1をエクスポートする必要はありません。 PS1はシェルの変数であり、他のプロセスでは使用されません。
  2. エスケープ角かっこが正しくないようです。彼らはそこに囲まれていた印刷されないそうすれば、 bash がプロンプトの幅を正確に計算できるようになります。この試み:

    PS1="\[\e[0;31m\]\$ \[\e[0;32m\]\w\[\e[0m\] : "
    #     1.........1    2.........2   3......3 
    

    したがって、印刷ビット(\$、、、\wコロン、およびスペース)は外部かっこ。

追加リファレンス:https://www.gnu.org/software/bash/manual/bashref.html#Controlling-the-Prompt

おすすめ記事