Для тех , кто приходит к выводу , что время запуска для новых снарядов на 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
можно сказать , что причина, по которой это происходит намного быстрее, заключается в том, что он был написан так, чтобы больше не загружать все файлы завершения; вместо этого он загружает файл завершения по требованию, или, как описывает его автор, загружает их без лишних усилий.