2 votos

¿Ejecutar comandos en PS1 en MacOS Sierra no funciona?

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?

1voto

thrig Puntos 101

Con un caso de prueba mínimo (menos, por supuesto, los colores frívolos) parece que la cita de PS1 es importante:

gitfoo () {
    echo >&2 "was run"
    git status -bs 2>/dev/null | head -1
}
#PS1="x$(gitfoo)x "
PS1='x$(gitfoo)x '

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X