Para quem chega à conclusão de que os tempos de inicialização de novos shells no MacOS são muito lentos para eles, esta é a solução .
Acabei de descobrir que existem de fato dois pacotes que podem ser instalados via brew
. Estou instalando o bash-completion
pacote há anos e nunca me incomodei em questioná-lo, embora nesse período eu tenha passado do Bash 3 para o 4 e agora para o 5. Agora, de vez em quando, eu revisitava o problema. , frequentemente tropeçando nessa discussão do StackOverflow.
Há outro pacote bash-completion@2
!
Qual é a diferença? bash-completion
é para o Bash versão 3.2. bash-completion@2
é para o Bash versão 4.1 ou superior e 5.
Ao remover o bash-completion
pacote antigo e instalar bash-completion@2
, meus tempos de inicialização do shell caíram de 605ms para 244ms. Essa é uma enorme melhoria de velocidade.
Eu suspeito que muitos de nós estão cometendo esse mesmo erro, pois as brew info
estatísticas mostram que o primeiro tem toneladas de instalações, enquanto o segundo tem tão poucos:
Deve-se observar que a resposta escolhida atual menciona o comentário de algumas linhas, o que fornece apenas uma ligeira melhora nos tempos de inicialização (se você estiver usando o bash-completion
pacote antigo , o que provavelmente é o caso), mas não tem nenhum impacto no novo bash-completion@2
pacote: este novo pacote é rápido, não importa o quê. Isso significa que não são necessários hacks.
TL; DR:
brew uninstall bash-completion && brew install bash-completion@2
Lembre-se de atualizar o caminho de origem para o arquivo de conclusão no seu arquivo .bashrc
ou .bash_profile
.
Fontes:
Como um tópico relacionado, eu uso muito o rclone
utilitário, portanto ele está instalado. Também tem o maior arquivo de conclusão que eu já vi . Removê-lo reduz o tempo de inicialização do meu shell para ~ 120ms, o que é muito rápido.
Editar:
Para quem deseja os detalhes técnicos que explicam esse problema, escrevi sobre isso nos fóruns da Homebrew . Para resumir, a razão que bash-completion@2
é muito mais rápido é porque ele foi escrito de modo que já não ansiosamente carrega todos os arquivos de conclusão; em vez disso, carrega um arquivo de conclusão sob demanda ou, como o autor descreve, carrega- os de maneira não-ansiosa .