
Eu tenho um Raspberry Pi rodando Raspbian (Debian Wheezy). Entrei set
em um terminal e fiquei surpreso com a longa lista. Parece ser quase inteiramente funções git - cerca de 3.700 linhas delas.
__git_all_commands=
__git_diff_common_options=$'--stat --numstat --shortstat --summary\n\t\t\t--patch-with-stat --name-only
...
Minha pergunta é: como eles chegaram lá e por quê?
Ocasionalmente, costumava git
receber pacotes.
Eu verifiquei todos os suspeitos do costume /etc/profile
, /etc/bash.bashrc
, .bashrc
,.profile
Encontrei um script /etc/bash_completion.d/git
(nunca tinha ouvido falar de bash_completion antes). Eu tenho que fazer mais alguns estudos para descobrir o que isso faz e exatamente onde é chamado.
Eu ainda preciso descobrirPOR QUEEu gostaria de executar isso em todos os shells de login quando uso apenas git
uma ou duas vezes por ano. (O Raspberry Pi não é exatamente dotado de RAM). Isso não parece acontecer no meu Mac.
Responder1
Essas funções fazem parte do suporte de conclusão do shell para git
. Eles são mantidos como parte do software Git. O Debian (no qual o Raspbian é baseado) distribui a configuração de conclusão do bash no git
pacote. As funções estão localizadas em /etc/bash_completion.d/git
, no mesmo diretório que outro suporte de conclusão de comando para bash.
Todos os arquivos /etc/bash_completion.d
são carregados como parte da configuração da conclusão programável do bash, em /etc/bash_completion
. .bashrc
Cargas padrão do Debian /etc/bash_completion
, você pode editá-lo se não quiser nenhuma conclusão específica de comando.
Se você nunca usa git, remova o git
pacote. Se você tiver o git
pacote instalado, provavelmente você às vezes executa o git
comando e, portanto, deseja ter uma boa conclusão para ele. “Eu raramente uso o git e quero economizar alguns kilobytes de RAM” é uma distinção muito tênue, mesmo para o Debian.
Se quiser pular esse arquivo de conclusão, mas usar outros, você podedesviaro arquivo para um nome que faça com que ele seja ignorado por /etc/bash_completion
. Desviar um arquivo é uma forma de instruir o gerenciador de pacotes para aplicar atualizações e remoções a um arquivo localizado em um local diferente.
dpkg-divert --add --local --rename --divert /etc/bash_completion.d/git.dpkg-diverted /etc/bash_completion.d/git
Responder2
Existem scripts globais e por usuário que são incluídos no login ( /etc/profile
, $HOME/.profile
, $HOME/.bash_profile
, $HOME/.bash_login
).
Na maioria das distros, o conteúdo de algum diretório (como /etc/env.d/*
ou algo semelhante) geralmente é incluído pelo script global, onde os pacotes podem colocar seus próprios scripts de configuração de ambiente que são originados a cada login.