Dla każdego, kto dojdzie do wniosku, że czasy uruchamiania nowych powłok w systemie MacOS są dla nich zbyt wolne, jest to rozwiązanie .
Właśnie odkryłem, że w rzeczywistości istnieją dwa pakiety, które można zainstalować brew. Instaluję bash-completionpakiet od lat i nigdy nie zadałem sobie trudu, aby go zakwestionować, mimo że w tym czasie przeszedłem z Bash 3, 4, teraz 5. Jednak od czasu do czasu wracam do problemu , często napotykam na tę dyskusję StackOverflow.
Jest kolejna paczka bash-completion@2!
Co za różnica? bash-completiondotyczy wersji Bash 3.2. bash-completion@2dotyczy wersji Bash 4.1+ i 5.
Po usunięciu starego bash-completionpakietu i zainstalowaniu bash-completion@2mój czas uruchamiania powłoki spadł z 605 ms do 244 ms. To ogromna poprawa prędkości.
Podejrzewam, że wielu z nas popełnia ten sam błąd, ponieważ brew infostatystyki pokazują, że ten pierwszy ma mnóstwo instalacji, podczas gdy drugi ma tak mało:

Należy zauważyć, że obecnie wybrana odpowiedź wspomina o komentowaniu niektórych wierszy, co zapewnia jedynie niewielką poprawę czasów uruchamiania (jeśli używa się starego bash-completionpakietu, którym prawdopodobnie wielu jest), ale nie ma żadnego wpływu na nowy bash-completion@2pakiet: ten nowy pakiet jest szybki bez względu na wszystko. Oznacza to, że nie wymaga hackowania.
TL; DR:
brew uninstall bash-completion && brew install bash-completion@2
Pamiętaj, aby zaktualizować ścieżkę źródłową do pliku zakończenia w pliku .bashrclub .bash_profilepliku.
Źródła:
Jako temat nieco powiązany, rcloneczęsto używam tego narzędzia, więc jest zainstalowane. Zdarza się również, że ma największy plik ukończenia, jaki kiedykolwiek widziałem . Usunięcie go skraca czas uruchamiania mojej powłoki do ~ 120 ms, co jest bardzo szybkie.
Edytować:
Dla każdego, kto chce poznać szczegóły techniczne wyjaśniające ten problem, pisałem o tym obszernie na forach Homebrew . Podsumowując, powodem, który bash-completion@2jest o wiele szybszy, jest to, że został napisany tak, że nie chętnie ładuje już wszystkich plików ukończenia; zamiast tego ładuje plik ukończenia na żądanie lub, jak opisuje go autor, ładuje je w nieskory sposób.