
Tengo una Raspberry Pi con Raspbian (Debian Wheezy). Entré set
en una terminal y me sorprendió la larga lista. Esto parece ser casi en su totalidad funciones de git: ~ 3700 líneas de ellas.
__git_all_commands=
__git_diff_common_options=$'--stat --numstat --shortstat --summary\n\t\t\t--patch-with-stat --name-only
...
Mi pregunta es, ¿cómo llegaron allí y por qué?
De vez en cuando solía git
recibir paquetes.
He comprobado a todos los sospechosos habituales /etc/profile
, /etc/bash.bashrc
, .bashrc
,.profile
Encontré un script /etc/bash_completion.d/git
(nunca antes había oído hablar de bash_completion). Tengo que estudiar un poco más para determinar qué hace esto y exactamente dónde se llama.
todavía necesito descubrirPOR QUÉMe gustaría ejecutar esto en cada shell de inicio de sesión cuando solo lo uso git
una o dos veces al año. (La Raspberry Pi no está exactamente dotada de RAM). Esto no parece suceder en mi Mac.
Respuesta1
Estas funciones son parte del soporte de finalización del shell para git
. Se mantienen como parte del software Git. Debian (en el que se basa Raspbian) distribuye la configuración de finalización de bash en el git
paquete. Las funciones están ubicadas en /etc/bash_completion.d/git
, en el mismo directorio que otros soportes de finalización de comandos para bash.
Todos los archivos /etc/bash_completion.d
se cargan como parte de la configuración de la finalización programable de bash, en formato /etc/bash_completion
. .bashrc
Las cargas predeterminadas de Debian /etc/bash_completion
, puede editarlas si no desea completar ningún comando específico.
Si nunca usas git, elimina el git
paquete. Si tiene el git
paquete instalado, es de suponer que a veces ejecuta el git
comando y, por lo tanto, querrá completarlo correctamente. “Uso git rara vez y quiero ahorrar unos pocos kilobytes de RAM” es una distinción demasiado fina incluso para Debian.
Si desea omitir ese archivo de finalización pero utilizar otros, puededesviarel archivo a un nombre que haga que /etc/bash_completion
. Desviar un archivo es una forma de indicarle al administrador de paquetes que aplique actualizaciones y eliminaciones a un archivo ubicado en un lugar diferente.
dpkg-divert --add --local --rename --divert /etc/bash_completion.d/git.dpkg-diverted /etc/bash_completion.d/git
Respuesta2
Hay scripts globales y por usuario que se incluyen al iniciar sesión ( ,,, /etc/profile
) .$HOME/.profile
$HOME/.bash_profile
$HOME/.bash_login
En la mayoría de las distribuciones, el contenido de algún directorio (como /etc/env.d/*
o algo similar) generalmente se incluye en el script global, donde los paquetes pueden colocar sus propios scripts de configuración del entorno que se obtienen en cada inicio de sesión.