Запуск удара в моей системе человечности занимает приблизительно 2 секунды. Если я удаляю загрузку/etc/bash_completition в .bashrc, это запускается незамедлительно. Конечно, я не хочу бросать completition, и я не думаю, загружая тот файл, законная причина задержки 2 секунд.
Любые идеи, как я могу узнать то, что проблема или как я могу ускорить вещи.
Обновление в 2013: большая часть завершения удара была переписана для автозагрузки завершений только при необходимости. Базовый сценарий намного легче теперь.
Сценарий завершения может иногда быть огромным в стандартах сценария оболочки. На серверах у меня есть доступ к, это - почти 1 700 строк (57 КБ), и это - просто базовый сценарий. В /etc/bash_completion.d
существует ~200 дополнительных сценариев для различных других команд (openssl
, mutt
, mount
...) в общей сложности 25 537 строк или 1,2 МБ. Каждый сценарий при определении источника, проверки, если команда на самом деле доступна прежде, чем определить обработчики завершений; ~330 раз в этом случае, каждый из которых включает проверку $PATH
для исполняемого файла с именем. (Хотя я ожидал бы /usr/bin
кэшироваться в памяти...)
По общему признанию, даже тот единственные взятия половина секунды для загрузки, не две целых секунды. Но это могла бы быть, по крайней мере, часть проблемы. Выполненный du -hs /etc/bash_completion*
или wc -l /etc/bash_completion{,.d/*} | grep total
если Вы хотите проверить.
Можно попытаться вручную получить сценарий в режиме "трассировки":
set -x
. /etc/bash_completion
Вы будете видеть каждую строку, поскольку она выполняется. Если существует конкретная команда, которая занимает много времени, необходимо заметить его.
(set +x
отключает режим трассировки.)