私は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
)。