Моя подсказка Bash очищается при удалении текста после него или заходит слишком далеко в истории.

При входе в систему приглашение выглядит нормально. Есть белые квадратные скобки вокруг цветного имени пользователя, а затем белая> в качестве моего приглашения, однако, если я дважды переместился вверх в своей истории, команда history перезапишет мое приглашение:

[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 ответ1

0

Ну, я нашел способ обойти это:

PROMPT_COMMAND=prompt

был изменен на:

PROMPT_COMMAND='PS1=`prompt`'

Изменить: и цвета были обернуты в \[ \] (то есть color='\[\e[0;32m\]')

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .