Я настроил приглашение bash PS1
с помощью этого файла ~/.bashrc .
Я не могу понять, почему мои выходные цвета меняются после первых двух строк вывода.
Есть идеи, что может быть причиной проблемы?
Кажется, проблема в том, что в конце подсказки нет 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.
Потому что ls
использует --color=...
и отправляет элементы управления esc для удаления цветов в конце строки.
попробуйте: ls -l --color=none
, символы будут полностью белыми.