(Mac) -bash: __git_ps1: comando no encontrado
Estoy intentando cambiar mi símbolo del sistema en la terminal. Sigo recibiendo el error:
-bash: __git_ps1: command not found
Lo probé simplemente escribiéndolo en la terminal tal como está: __git_ps1
. También lo probé en el.bash_profile
if [ -f ~/.git-completion.bash ]; then
source ~/.git-completion.bash
export PS1='[\W]$(__git_ps1 "(%s)"): '
fi
Como podrás ver/decir, sí, tengo instalado el autocompletado y ¡funciona muy bien!
Me encontré con esta pregunta: " La variable de entorno de PS1 no funciona en Mac ", que proporciona el código
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"
Así que lo agrego a mi .bash_profile
esperanza de que cambie algo. Bueno, así fue. Simplemente cambió la salida del error.
Aquí está el .bash_profile
con la adición:
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"
if [ -f ~/.git-completion.bash ]; then
source ~/.git-completion.bash
export PS1='[\W]$(__git_ps1 "(%s)"): '
fi
Y ahora aquí está el resultado de error modificado:
sed: (%s): No such file or directory
Nota: También moví el alias debajo de la fuente sin ninguna diferencia. Tengo la versión 1.7.12.1 de git
Este debería ser un cambio simple. ¿Alguien puede ayudarme?
Editar 13/10/12
No, definitivamente no quiero definir __git_ps1 yo mismo, pero solo estaba tratando de ver si sería reconocido al hacerlo. Sí, tengo el .git-completion.bash
archivo instalado. Así es como obtuve la finalización automática en mi máquina.
cd ~
curl -OL https://github.com/git/git/raw/master/contrib/completion/git-completion.bash
mv ~/git.completion.bash ~/.git-completion.bash
A ls -la
luego enumera el .git-completion.bash
archivo.
Ha instalado la versión de git-completion.bash
- master
en el historial de desarrollo de git, esto es después de una confirmación que dividió la __git_ps1
función de la funcionalidad de finalización en un nuevo archivo ( git-prompt.sh
). La confirmación que introdujo este cambio, que explica el motivo, es af31a456 .
Aún así, te sugeriría que obtengas la versión de git-completion.bash
(o git-prompt.sh
) que viene incluida con tu instalación de git.
Sin embargo, si por alguna razón aún desea utilizar esta funcionalidad mediante scripts descargados por separado de master
, debe descargarlos git-prompt.sh
de manera similar:
curl -o ~/.git-prompt.sh \
https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
... y agregue la siguiente línea a su ~/.bash_profile
:
source ~/.git-prompt.sh
Entonces tu PS1
variable que incluye __git_ps1 '%s'
debería funcionar bien.
Geoff informó el 13/10/12 que agregó lo siguiente a su .bash_profile
trabajo, mientras que otros no lo hicieron:
if [ -f ~/.git-prompt.sh ]; then
source ~/.git-prompt.sh
export PS1='Geoff[\W]$(__git_ps1 "(%s)"): '
fi
Después de actualizar a OSX 10.9 Mavericks, tuve que hacer referencia a los siguientes archivos para que el comando git shell se completara y el indicador git volviera a funcionar.
Desde mi .bash_profile o similar:
if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash ]; then
. /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash
fi
source /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh
#shell prompt example
PS1='\u $(__git_ps1 "(%s)")\$ '
Debería
$ brew instalar bash bash-completado git
Luego, obtenga "$(brew --prefix)/etc/bash_completion" en su .bashrc.
Lo siguiente funcionó para mí de maravilla:
Ejecute lo siguiente en su Terminal:
curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git
Abrir/Crear bash_profile:
$ vi ~/.bash_profile
Agregue lo siguiente al archivo:
source ~/.bash_git
export PS1='\[\033[01;32m\]os \[\033[01;34m\]\w $(__git_ps1 "[%s]")\$\[\033[00m\] '
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"
Finalmente, consíguelo usando:
$ source ~/.bash_profile
Esto solucionará el problema de bash: __git_ps1: command not found
.
Además, su mensaje cambiará a "os". Para cambiar "os" por otra cosa, modifique la cadena "os" en la línea de exportación de PS1.