Для тех , кто приходит к выводу , что время запуска для новых снарядов на MacOS является слишком медленным для них, этого решение .
Я только что обнаружил, что на самом деле есть два пакета, которые можно установить через brew. Я устанавливал bash-completionпакет в течение многих лет, и никогда не удосужился подвергнуть его сомнению, хотя в то время я переходил с Bash 3 на 4, а теперь и на 5. Однако время от времени я возвращался к проблеме часто спотыкается об этом обсуждении StackOverflow.
Там еще один пакет, bash-completion@2!
Какая разница? bash-completionдля Bash версии 3.2. bash-completion@2для Bash версии 4.1+ и 5.
При удалении bash-completionи установке старого пакета bash-completion@2время запуска моей оболочки сократилось с 605 до 244 мс. Это огромное улучшение скорости.
Я подозреваю, что многие из нас совершают ту же ошибку, так как brew infoстатистика показывает, что у первого есть тонны установок, а у последнего так мало:

Следует отметить, что в текущем выбранном ответе упоминается закомментирование некоторых строк, что обеспечивает лишь незначительное улучшение времени запуска (если используется старый bash-completionпакет, который, вероятно, есть у многих), но никак не влияет на новый bash-completion@2пакет: этот новый пакет быстро, несмотря ни на что. Это означает, что никаких взломов не требуется.
TL; DR:
brew uninstall bash-completion && brew install bash-completion@2
Не забудьте обновить исходный путь до файла завершения в вашем .bashrcили .bash_profileфайле.
Источники:
Поскольку тема несколько связана, я часто использую rcloneутилиту, поэтому она установлена. Он также имеет самый большой файл завершения, который я когда-либо видел . Удаление этого сокращает время запуска моей оболочки до ~ 120 мс, что очень быстро.
Редактировать:
Для тех, кому нужны технические подробности, объясняющие эту проблему, я подробно писал об этом на форумах Homebrew . Подводя итог, bash-completion@2можно сказать , что причина, по которой это происходит намного быстрее, заключается в том, что он был написан так, чтобы больше не загружать все файлы завершения; вместо этого он загружает файл завершения по требованию, или, как описывает его автор, загружает их без лишних усилий.