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 ?

7voto

cliss Points 56

Zsh, seul, démarre en 0,1 seconde environ, ce qui est largement suffisant. J'ai juste remarqué qu'à mesure que j'approchais de la marque des 50 000 commandes historiques, le chargement de la première invite prenait plus de 3 secondes.

Je ne sais pas comment vous trouvez toutes ces autres raisons pour un démarrage lent, mais le mien était exactement ce que j'avais pensé en premier. J'ai fait un mv ~/.zsh_history zsh_history_backup et bam, un démarrage de 3 secondes est maintenant un démarrage de 0,1 seconde. Curieusement, /usr/bin/time /bin/zsh -i -c exit ne parvient pas à capturer le temps de chargement dans l'historique.

Si vous n'avez pas des dizaines de milliers de commandes dans votre historique zsh, alors ce n'est pas le cas. Mon ~/.zsh_history mesurait 1,8 Mo. Il est tout à fait possible de coller accidentellement une grande quantité de données sous forme de commande dans un terminal, ce qui fait gonfler l'historique rapidement (bien que ce soit quelque chose à éviter car cela peut être extrêmement destructeur).

6voto

Artem Tikhomirov Points 547

Maintenant, oh-my-zsh vérifie l'option de configuration spéciale de git oh-my-zsh.hide-status avant de demander le statut. Ainsi, exécutez

git config oh-my-zsh.hide-status 1

sur un référentiel problématique.

2voto

mika Points 121

J'utilisais le thème "af-magic".

Le passage à "muse" a résolu le problème.

Editez ~/.zshrc et modifiez cette ligne :

#ZSH_THEME="random"
#ZSH_THEME="af-magic"
ZSH_THEME="muse"

1voto

Shubham Jain Points 141

Ce sont les étapes que j'ai utilisées pour optimiser la vitesse de démarrage de mon Shell et réduire le retard dans l'exécution des commandes -

  1. Si vous utilisez powerlevel9k, alors je vous recommande de passer immédiatement à powerlevel10k .

Powerlevel10k est un thème pour Zsh. Il met l'accent sur la vitesse, la flexibilité et l'expérience prête à l'emploi. Il s'agit d'une réimplémentation du thème populaire Powerlevel9k pour zsh. Il a exactement la même apparence avec la même configuration, mais il est 10 à 100 fois plus rapide. Il est optimisé à chaque niveau de la pile, jusqu'à l'utilisation d'une version corrigée de libgit2 qui peut analyser un repo 4 fois plus vite que l'original. Il peut supprimer le décalage au démarrage de Zsh même s'il n'est pas causé par un thème avec des fonctionnalités telles que Instant Prompt.

  1. Allez dans Préférences -> Profils -> Général -> Commande et sélectionnez l'option Commande au lieu de Login Shell et collez la commande ci-dessous dans la case à côté.

    login -pfq username /usr/local/bin/zsh -il

Vous ne verrez pas l'heure de la dernière connexion imprimée lorsque vous démarrez un nouvel onglet maintenant. Si zsh n'est pas présent dans l'emplacement /usr/local/bin/zsh, vous devrez installer zsh en utilisant brew. Le zsh par défaut fourni par mac se trouve à l'emplacement /usr/bin/zsh et peut utiliser une ancienne version comme 5.2 qui peut causer une vitesse lente lorsqu'elle est utilisée avec iTerm ou oh-my-zsh.

  1. Pour accélérer le collage dans zsh, exécutez la commande suivante dans le terminal.

    mkdir -p $ZSH_CUSTOM/lib && touch $ZSH_CUSTOM/lib/misc.zsh

  2. Le point 2 devrait déjà prendre en charge les temps de connexion lents. Mais par sécurité, exécutez la commande suivante

    mkdir -p .hushlogin

  3. Il y a des tonnes de plugins que vous utilisez peut-être qui sont lents et créent un décalage. Vous devez identifier ces plugins et les supprimer. Pour cela, vous aurez besoin du profilage zsh. Suivez ce lien pour plus de détails.

https://stevenvanbael.com/profiling-zsh-startup

0voto

pinguinjkeke Points 101

J'ai obtenu de grandes améliorations de vitesse après avoir effacé le répertoire ~/.oh-my-zsh/plugins/. Il contenait de nombreux plugins inutilisés.

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