Für alle, die zu dem Schluss kommen, dass die Startzeiten für neue Shells unter MacOS zu lang sind, ist dies die Lösung .
Ich habe gerade festgestellt, dass es tatsächlich zwei Pakete gibt, über die installiert werden können brew
. Ich habe das bash-completion
Paket seit Jahren installiert und mich nie darum gekümmert, es in Frage zu stellen, obwohl ich in dieser Zeit von Bash 3 zu 4 zu jetzt 5 übergegangen bin. Von Zeit zu Zeit würde ich das Problem jedoch noch einmal untersuchen stolpert oft über diese StackOverflow-Diskussion.
Es gibt noch ein Paket bash-completion@2
!
Was ist der Unterschied? bash-completion
ist für Bash Version 3.2. bash-completion@2
ist für Bash Version 4.1+ und 5.
Durch das Entfernen des alten bash-completion
Pakets und die Installation bash-completion@2
sind meine Shell-Startzeiten von 605 ms auf 244 ms gesunken. Das ist eine enorme Geschwindigkeitsverbesserung.
Ich vermute, dass viele von uns den gleichen Fehler machen, da die brew info
Statistiken zeigen, dass Ersteres Tonnen von Installationen hat, während Letzteres so wenige hat:
Es sollte beachtet werden, dass die aktuell gewählte Antwort das Auskommentieren einiger Zeilen erwähnt, was die Startzeiten nur geringfügig verbessert (wenn das alte bash-completion
Paket verwendet wird, was wahrscheinlich viele sind), aber keinerlei Auswirkungen auf das neue bash-completion@2
Paket hat: dieses neue Paket ist schnell egal was. Das bedeutet, dass keine Hacks erforderlich sind.
TL; DR:
brew uninstall bash-completion && brew install bash-completion@2
Denken Sie daran, den Quellpfad zur Abschlussdatei in Ihrer Datei .bashrc
oder zu aktualisieren .bash_profile
.
Quellen:
Als etwas verwandtes Thema benutze ich das rclone
Dienstprogramm häufig, daher ist es installiert. Es ist auch die größte Abschlussdatei, die ich je gesehen habe . Durch das Entfernen wird die Startzeit meiner Shell auf ~ 120 ms reduziert, was sehr schnell ist.
Bearbeiten:
Für alle, die die technischen Details wissen möchten, die dieses Problem erklären, habe ich ausführlich in den Homebrew-Foren darüber geschrieben . Um es zusammenzufassen, dass der Grund , bash-completion@2
so viel schneller ist , weil es geschrieben wurde , so dass es nicht mehr mit Spannung lädt alle Abschluss - Dateien; Stattdessen wird eine Abschlussdatei nach Bedarf geladen oder, wie der Autor es beschreibt, auf nicht eifrige Weise geladen .