4

Иногда моя оболочка (zsh) запускается дольше, чем обычно (я открываю терминал, и он немного зависает, пока не могу вводить команды).

У меня есть несколько псевдонимов на моем .zshrc (ну, на самом деле они находятся в другом файле, из которого .zshrc делает source ).

Если вы создадите alias с открытой оболочкой, он останется действительным только в текущем сеансе, поэтому я начал задумываться, не влияет ли весь этот source и alias на производительность запуска оболочки (я предполагаю, что он должен пройти длительный процесс запуск всех этих команд при запуске).

Если это произойдет, разве не будет более эффективно иметь эти псевдонимы в качестве сценариев оболочки и помещать их где-нибудь в моем PATH?

3 ответа3

5

Маловероятно, что наличие нескольких дополнительных определений псевдонимов в ваших файлах запуска приведет к заметным задержкам при запуске. Даже если бы у вас было так много, это действительно имело значение, задержка не была бы случайной, она была бы одинаковой каждый раз.

Более вероятно, что что-то в вашей последовательности запуска ждет сеть. Примером может служить каталог пути на сетевом диске, который не готов или, возможно, не включен вообще. Тайм-ауты сети часто много секунд.

0

Для тех, кто использует oh-my-zsh, стоит знать, что он устанавливает другое имя для файла .zcompudump, это: $ ZSH_COMPDUMP. Идея состоит в том, чтобы проверить, что файл старше одного дня, и восстановить его. Моя попытка, пожалуйста, ребята, прокомментируйте, чтобы дать мне несколько советов по этому поводу:

autoload -Uz compinit
if [[ -n ${ZDOTDIR:-${HOME}}/$ZSH_COMPDUMP(#qN.mh+24) ]]; then
    compinit -d $ZSH_COMPDUMP;
else
    compinit -C;
fi;

# -D ........... disables .zcompudump file
# -d ........... used to set an alternative name to .zcompdump
# -i ........... accept insecure files
# -C ........... ignore checking at all

Рекомендации:

0

Возможно, вы НЕ делаете «дамп» вашей системы завершения при вызове compinit? (это может замедлить Zsh при запуске ...). Если вы используете compinit, убедитесь, что вы просто звоните

autoload -U compinit
compinit

(без каких-либо забавных опций для compinit, особенно без -D).

После этого при первом запуске оболочки она будет медленной (поскольку она будет генерировать дамп, но следующие не будут).

Другие мысли, возможно, ваша система портит функции завершения, и каждый раз принудительно генерируется новый дамп? Попробуйте установить compinit в вашем .zshrc с -C (после генерации дампа хотя бы один раз).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .