PS1またはBashプロンプトのカスタム問題[重複]

PS1またはBashプロンプトのカスタム問題[重複]

私はLinux Mint 20.1 Cinnamonを使用していますが、今回は関係ありませんが、

$PS1または通常は最後の文字(ユーザー)#(ルート)の色を指定するBashプロンプトをカスタマイズするのに問題があります。

現在、PS1コードは次の場所にあります.bashrc

if [ "$color_prompt" = yes ]; then
    color_red=$(tput bold)$(tput setaf 1)
    color_green=$(tput bold)$(tput setaf 2)
    color_reset=$(tput sgr0)
    PS1='${debian_chroot:+($debian_chroot)}\u @ \h $PWD $color_green\$$color_reset '
else
    PS1='${debian_chroot:+($debian_chroot)}\u @ \h $PWD \$ '
fi

問題の説明:

ターミナル()を実行するとgnome-terminal大丈夫に見えますが、矢印キーを使用して履歴を見ると、約10回以上経過するとテキストが壊れます。

歪んだ端末の例

説明できませんが説明できますか?私は何が間違っていましたか?

PS:二重引用符に変更できる場合は、一重引用符で囲まれた理由が何であるかわかりません。


失敗 #2

二重引用符形式に「変換」しようとしましたが、記録が12回以上増加したときに問題が発生しました。

PS1="\u @ \h \[\$PWD\] \[$(tput bold)\]\[$(tput setaf 2)\]\\$\[$(tput sgr0)\] "

失敗 #3

今、あきらめ始め、最後のチャンスは、次のようにエスケープシーケンスを直接使用することです。

PS1='\u @ \h $PWD \e[1;32m\$ \e[0m'

前述のように、端末は歪んでおり、現在の色なしで動作するように設定されています。

答え1

PS1='${debian_chroot:+($debian_chroot)}\u @ \h $PWD \[$color_green\]\$\[$color_reset\] '

バラより私の答え。印刷できないシーケンスをラップする必要があります\[ \]。それがすべてです。印刷されたフラグメント(つまり、プロンプトに追加された長さ)はラップしないでください。

試してみると、梱包が少なすぎるか(何もありません)、梱包が多すぎます($PWD)。

関連情報