Benutzerdefinierte Bash-Eingabeaufforderung überschreibt sich selbst

Ich verwende eine benutzerdefinierte Bash-Eingabeaufforderung, um den Git-Zweig anzuzeigen.

Alles ist in/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 

Problem ist das, wenn ich Farbe für einstelle$_branch In der Funktion wird meine Eingabeaufforderung überschrieben, wenn EOL erreicht ist:

Versuchte alle möglichen Variantentput, printf, $'' Notation.

Ich habe das Problem gelöst, indem ich die Farbe nur in eingestellt habePS1:

Aber..

Ich möchte wissen, warum meine Eingabeaufforderung überschrieben wirdBehebung dieses Problems bei Verwendung der Funktion

Ich benutze Gentoo Linux.GNU bash, verze 4.2.37(1)-release (i686-pc-linux-gnu)

\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\] '

Problem ist das, wenn ich Farbe für einstelle$_branch In der Funktion wird meine Eingabeaufforderung überschrieben, wenn EOL erreicht ist:

Versuchte alle möglichen Variantentput, printf, $'' Notation.

Ich habe das Problem gelöst, indem ich die Farbe nur in eingestellt habePS1:

Aber..

Ich möchte wissen, warum meine Eingabeaufforderung überschrieben wirdBehebung dieses Problems bei Verwendung der Funktion

Ich benutze Gentoo Linux.GNU bash, verze 4.2.37(1)-release (i686-pc-linux-gnu)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage