Hace poco tuve que cambiar a un Mac para mi trabajo. Como estoy acostumbrado a entornos tipo Unix, me traje mi generador de avisos PS1 de Ubuntu.
Me costó bastante personalizar el terminal para que se viera algo utilizable (¿quién pensó que las letras negras sobre fondo blanco son una solución aceptable en 2017?) Sin embargo una cosa no funciona...
En concreto, la extensión git ps1. Sí, instalé los paquetes bash-completion y git a través de Homebrew, y obtuve tanto el git-completion.bash como el git-prompt.sh antes de asignar PS1.
Mi .bash_profile
se ve así:
build_prompt () {
clear="\[$(tput sgr0)\]"
blue="\[\033[38;5;27m\]"
green="\[\033[38;5;2m\]"
yellow="\[\033[38;5;11m\]"
export PS1="[${blue}\u${clear}@${green}\h${clear}] ${yellow}\w${clear}$(__git_ps1 " (%s)") \\$ > "
}
source /usr/local/etc/bash_completion.d/git-completion.bash
source /usr/local/etc/bash_completion.d/git-prompt.sh
export GIT_PS1_SHOWDIRTYSTATE=yes
export GIT_PS1_SHOWCOLORHINTS=true
export CLICOLOR=1
alias ls='ls -GFhAl'
build_prompt
Como puede ver, añado el __git_ps1
al final de mi valor PS1, y en teoría debería mostrar la información del árbol Git siempre que esté en una carpeta de repositorio git.
Sin embargo este script sólo se ejecuta una vez, cuando bash se inicia. El mismo código, sin embargo, funciona en Ubuntu sin problemas, mostrando dinámicamente la información del árbol git sin importar dónde inicie bash. En este Mac, sin embargo, sólo muestra el valor que recoge en el lanzamiento, por lo que si inicio un prompt de bash en una carpeta de git, voy a estar atascado con su pantalla de información hasta que cierre la instancia de la terminal.
¿Qué estoy haciendo mal?