1

Я настроил приглашение bash PS1 с помощью этого файла ~/.bashrc . Я не могу понять, почему мои выходные цвета меняются после первых двух строк вывода.

выход bash

Есть идеи, что может быть причиной проблемы?

2 ответа2

2

Кажется, проблема в том, что в конце подсказки нет escape-последовательности для сброса цветов, поэтому текст команды также раскрашен, потому что интерпретатор не знает, где прекратить окрашивание. Вам нужно добавить эту escape-последовательность в конце вашего приглашения \[\033[0m\] . Таким образом, ваша подсказка будет выглядеть примерно так:

"${USER_COLOR}\u${WHITE}@${SYSTEM_COLOR}\h ${CYAN}\w ${RED}"'$(rvm_prompt)'"${GREEN}"' $(__git_ps1 "(%s)") '"${WHITE} $\[\033[0m\] "

Вы можете связать эту последовательность с переменной, добавить ее в определение функции приглашения и использовать ее, как и другие определения цвета:

local RESET="\[\033[0m\]"

Таким образом, приглашение будет:

"${USER_COLOR}\u${WHITE}@${SYSTEM_COLOR}\h ${CYAN}\w ${RED}"'$(rvm_prompt)'"${GREEN}"' $(__git_ps1 "(%s)") '"${WHITE} $${RESET} "

Для дальнейшего прочтения вам следует ознакомиться со статьей Color Bash Prompt Arch Wiki.

1

Потому что ls использует --color=... и отправляет элементы управления esc для удаления цветов в конце строки.

попробуйте: ls -l --color=none , символы будут полностью белыми.

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