履歴/削除コマンドを呼び出すと、Bash プロンプト コマンドが上書きされる

履歴/削除コマンドを呼び出すと、Bash プロンプト コマンドが上書きされる

私の Bash プロンプトは、その後のテキストを削除したり、履歴をあまりに遠くまで移動したりすると、自動的にクリアされます。

ログインすると、プロンプトは正常に表示されます。色付きのユーザー名の周りに白い括弧があり、プロンプトとして白い > が表示されますが、履歴を 2 つ上に移動すると、履歴コマンドによってプロンプトが上書きされます。

[stonewareslord] >        #Initial prompt. stonewareslord is green
                   | Cursor is above this pipe symbol

[stonewareslord] > ls     #Up arrow pressed once. ls was my last command. Colors are normal, ls is white
                     | Cursor is above this pipe symbol

pwdonewareslord] > ls     #Up arrow a second time. pwd overwrite [st. pwd is white and the other colors are normal. 
   | Cursor is above this pipe symbol

コマンドを削除した場合にも発生します:

[stonewareslord] > ls     #Typed command after initial prompt. stonewareslord is green
                     | Cursor is above this pipe symbol

[stonewareslord] > l      #Deleted one character
                    | Cursor is above this pipe symbol

                          #Deleted second character (line is blank). Anything I type is white
| Cursor is above this pipe symbol

おそらくこれに影響を与える可能性のある bashrc 内の行は次のとおりです。

color='\e[0;32m'  #Green
reset='\e[0m'     #Color is set back to normal (white)
prompt(){
    printf "[$color%s$reset]>" `whoami`
}
PS1=""
PROMPT_COMMAND=prompt

export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="%Y-%m-%d_%H:%M:%S "
export HISTFILE=~/.bash_eternal_history

readonly HOME
readonly HISTIGNORE

答え1

さて、私はそれを回避する方法を見つけました:

PROMPT_COMMAND=prompt

次のように変更されました:

PROMPT_COMMAND='PS1=`prompt`'

編集:そして色は\[ \](つまりcolor='\[\e[0;32m\]')で包まれました

関連情報