Utilizo la siguiente entrada en ~/.bashrc
el archivo para colorear el mensaje y mostrar la rama actual del repositorio de git:
PS1='\[\e[1;32m\]\[\u@\h\]\[\e[m\] \[\w\]\[\e[1;1m\]\[$(__git_ps1 " (%s)")\] \[\e[1;1m\]\[$\] \[\e[m\]'
Esto funciona casi bien, excepto cuando uso el historial de bash (la tecla de flecha hacia arriba varias veces), la línea de comando queda "sin sangría" (solo los primeros caracteres del mensaje permanecen intactos) y lo visible es:
usemmand
cuando mi nombre de usuario es user
y el comando es command
.
Respuesta1
\[
y \]
solo debe usarse alrededor de partes del símbolo del sistema quenoavanzar el cursor, a pesar de tener texto real. Si __git_ps1
produce algún resultado visible, esto desincronizará su línea de comando.
Respuesta2
Esta es la versión correcta:
COLOR1="\[\e[1;32m\]"
COLOR2='\[\e[1;1m\]'
COLOR3='\[\e[m\]'
GIT_STATUS=$(__git_ps1 " %s")
PROMPT_CHAR="$"
PROMPT="${COLOR1}\u@\h${COLOR3} \w${COLOR2}${GIT_STATUS} ${COLOR2}${PROMPT_CHAR} ${COLOR3}"
PS1="$PROMPT"
export PS1
Respuesta3
Cualquiera que trabaje con este problema, aquí está el ejemplo que funcionó para mí:
ANTES:
export PS1="\033[0;33m[\u@\h]\033[1m\e[m \w \033[36m[>>]\033[0m\e[m "
DESPUÉS:
export PS1='\[\033[0;34m\][\u@\h]\[\033[1m\e[m\] \w \[\033[35m\][>>]\[\033[0m\e[m\] '
Notas alrededor '\\[\\]'
de los colores.