Я использую пользовательское приглашение bash для отображения ветки git.
Все находится в /etc/bash/bashrc
:
function formattedGitBranch {
_branch="$(git branch 2>/dev/null | sed -e "/^\s/d" -e "s/^\*\s//")"
# tried these:
echo -e "\e[0;91m ($_branch)"
echo -e "\e[0;91m ($_branch) \e[m"
echo -e $'\e[0;91m'"($_branch)"
echo "($_branch)"
echo "$(tput setaf 2) ($_branch) $(tput setaf 9)"
printf "\e[0;91m ($_branch)"
}
# color is set before function call
PS1='\[\033[01;34m\] \[\033[0;91m\]$(formattedGitBranch) \$\[\033[00m\] '
# color is set inside function
PS1='\[\033[01;34m\] $(formattedGitBranch) \$\[\033[00m\] '
Проблема в том, что когда я устанавливаю цвет для $_branch
в функции, моя подсказка будет перезаписана при достижении EOL:
Пробовал все возможные варианты обозначения tput
, printf
, $''
.
Я решил проблему, установив цвет только в PS1
:
Но..
- Я хотел бы знать, почему он переписывает мое приглашение
- Как исправить эту проблему при использовании функции
Я использую Gentoo Linux. GNU bash, verze 4.2.37(1)-release (i686-pc-linux-gnu)