Me topé con algunas instrucciones en el libro "Pro Git"
Sugiere:
Descargue este archivo: https://github.com/git/git/blob/master/contrib/completion/git-completion.bash
Si usa el shell Bash, Git viene con un buen script de autocompletado que puede habilitar. Descárguelo directamente desde el código fuente de Git en https://github.com/git/git/blob/master/contrib/completion/git-completion.bash . Copie este archivo en su directorio de inicio y agréguelo a su
.bashrc
archivo:fuente ~/git-completion.bash
Fuente https://github.com/progit/progit/blame/master/en/02-git-basics/01-chapter2.markdown#L1115
(colocar esta línea en .bashrc no funcionará en los sistemas Mac OS X que discutí aquí: ¿ Por qué Mac OS X no genera ~/.bashrc? )
Coloque este archivo git-completion.bash
( /opt/local/etc/bash_completion.d
si desea que bash complete (para el comando git) para que funcione en todas las cuentas de usuario. (Como si bash leyera todos los scripts en /opt/local/etc/bash_completion.d
)
Si desea configurar Git para que todos los usuarios completen automáticamente el shell de Bash, copie este script en el
/opt/local/etc/bash_completion.d
directorio de los sistemas Mac o en el/etc/bash_completion.d/
directorio de los sistemas Linux. Este es un directorio de scripts que Bash cargará automáticamente para proporcionar terminaciones de shell.
Fuente: https://github.com/progit/progit/blame/master/en/02-git-basics/01-chapter2.markdown#L1119
Descubrí que bash de Mac OS NO lee scripts dentro de /opt/local/etc/bash_completion.d
. Puse el archivo allí (creé todas las carpetas, porque no existían):
Y la finalización de git no funciona en ninguna cuenta.
¿Bash de Mac OS X lee scripts para todos los usuarios de /opt/local/etc/bash_completion.d
?
¿Está mal el libro "Pro Git"? ¿Puedo informarlo en su página de Github?
¿O estoy equivocado?
Bash solo lee los scripts de forma predeterminada en su directorio de inicio, o si faltan en /etc
. Consulte la documentación de Bash . Si usa Terminal.app de OSX, entonces de forma predeterminada se lee ~/.bash_profile
.
Esto es cierto para todos los bash en Linux u otros sistemas operativos.
Para leer desde otro directorio, por ejemplo, /opt/local/etc/bash_completion.d
debe editar sus archivos de inicio para obtener (es decir, incluir) los archivos desde allí
Las instrucciones para el script no mencionan /opt/local/...
cuál es una ubicación no estándar en cualquier Unix. (por no estándar, se permite que lo usen paquetes de terceros, pero no se define qué debería estar allí) Dicen
- Copie este archivo en algún lugar (por ejemplo,
~/.git-completion.sh
).Agregue la siguiente línea a su
.bashrc
/.zshrc
:
source ~/.git-completion.sh
- Considere cambiar su PS1 para que también muestre la rama actual, consulte
git-prompt.sh
los detalles.
La cotización progit asume que conoce bash. Todo lo que dice es colocar los archivos de la primera cita en un lugar específico si desea que todos los usuarios de la máquina los usen y no donde ~
solo el usuario que los instala pueda verlos. es decir, el punto es multiusuario versus usuario único.
Él también elige ese camino ya que nada más lo usa y no debe editar /etc
archivos en OS X ya que las actualizaciones del sistema operativo de Apple podrían sobrescribirlos, por lo que debe elegir otro lugar. (Hubiera elegido algo debajo, /usr/local
ya que allí es donde deben ir los scripts mantenidos manualmente).
~/.bashrc
es el lugar correcto para editar y agregar la fuente. Consulte su otra pregunta y el manual de bash para configurar. ~/.bash_profile
La forma sugerida de bash es fuente .bashrc
en .bash_profile
. Tenga en cuenta que en OS X usar Terminal.app no es la única forma de ejecutar shells, por lo que puede haber sesiones que comiencen con .bashrc
.
Los archivos de finalización de bash del núcleo no se instalan como parte de OS X, por lo que no hay ningún lugar para agregar su finalización de git para que el núcleo lo recoja.
Me disculpo, pero no estoy seguro de cómo instalé la finalización de bash, pero creo que usé MacPorts, también puedes usar Homebrew.
Tengo la carpeta que contiene archivos de finalización para varias herramientas de línea de comandos . /usr/local/opt/bash-completion/etc/bash_completion.d
La función bash_completion ciertamente lee todos los archivos en este directorio.
Entonces, primero debe instalar bash-completion, luego el archivo de finalización de git y todo estará bien.
Dado que ninguna de las respuestas anteriores recibió su cheque, ¿por qué no pasar a zsh
la que tiene una pila de finalización más uniforme?
Sí, el libro bash necesita ser corregido y sí, tienes que hacer más trabajo para que funcione universalmente, pero para la mayoría de las personas tener una cuenta funcionando parece lo suficientemente bueno para bash.
Pablo Brewczynski
Pablo Brewczynski
mmmmmm