91 votes

zsh démarre incroyablement lentement

ZSH prend environ une seconde et demie entre la création d'une nouvelle fenêtre de terminal et le moment où il est prêt. Je suis presque sûr que le coupable est compinit .

Je n'ai pas été en mesure de trouver de la bonne documentation sur compinit, mais il semble qu'il devrait mettre en cache toutes les choses nécessaires dans un fichier comme .zcompdump .

Des astuces pour accélérer le processus ?

41voto

int_ua Points 141

oh-my-zsh mettait environ 1,5 seconde à démarrer sur mon ordinateur portable. J'ai écrit certaines des étapes que j'ai suivies pour réduire ce temps à environ 0,25 seconde. .

Une autre bonne âme résumé les étapes nécessaires pour intégrer mes modifications dans votre copie de oh-my-zsh.

Le plus gros problème est que compinit était appelé un tas de fois supplémentaires au lieu d'une seule fois après que le fpath ait été complètement défini. J'ai fait ces changements sur ma branche de oh-my-zsh sur github. Les changements ont été discutés sur github et ils semblent bien fonctionner pour quelques personnes. Nous espérons que les changements seront fusionnés dans oh-my-zsh dans un avenir proche.

34voto

kylehotchkiss Points 750

Bien que ZSH ait sa propre part de ralentissements, si vous trouvez la fenêtre du terminal vide pendant quelques instants avant que vous ne voyiez l'icône Last Login: vous devrez effacer vos fichiers journaux pour constater des améliorations de vitesse. C'est toujours un problème depuis OSX Lion et il faudra le faire tous les plusieurs mois. C'est dommage, je sais.

La commande est :

sudo rm -rf /private/var/log/asl/*.asl

Bien sûr, vous besoin de de lire cet article à l'avance et ainsi vous savez exactement ce qui se passe, parce que courir n'importe quoi qui dit sudo rm Il faut y réfléchir. Je ne mets cela ici que parce que votre utilisation de ZSH prouve votre compétence avec la ligne de commande pour commencer.

21voto

Bruno Lobo Points 251

Dans mon cas, le NVM le rendait lent.

Code original (dans .bash_profile, .zshrc charge mon bash_profile)

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

Je l'ai changé en :

export NVM_DIR="$HOME/.nvm"
#[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
alias nvm="unalias nvm; [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"; nvm $@"

J'ai ajouté l'alias (dernière ligne), de sorte que je ne charge le NVM que lorsque j'essaie de l'utiliser. Cela a diminué le temps de chargement de 1,5 à 0,2 seconde.

/usr/bin/time zsh -i -c exit #If you want to time yours

15voto

xer0x Points 341

Ma plus grande amélioration est venue de la suppression des éléments de la section plugin=(). Les plugins 'github' et 'brew' sont très lents à charger.

J'ai aussi enlevé moyeu que j'avais aliasé en git et ça a accéléré l'invite aussi.

J'ai utilisé '/usr/bin/time zsh -i -c exit' pour enregistrer les temps de démarrage, mais compinit ne semble pas faire une assez grande différence pour moi.

Ce serait formidable d'entendre ce que les autres font pour accélérer le processus.

9voto

Joey1978 Points 109

Utilisez-vous le logiciel pré-installé /bin/zsh ou un autre ? Je demande, parce que le zsh que j'ai installé par le biais de fink démarre terriblement lentement en raison de l'inclusion de Modèles zsh alors que la vanille démarre tout de suite.

L'exécution avec un fichier de vidage explicite ( compinit -d dumpfile ) le font aller plus vite ? La page de manuel indique que

L'invocation suivante de compinit lira le fichier vidéo au lieu de d'effectuer une initialisation complète.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X