Fonctions d'achèvement ZSH cassées

4

Mon installation oh-my-zsh, qui fonctionne depuis presque un an, vient de tomber en panne. Lorsque j'ouvre un terminal, je reçois:

/home/marcel/.oh-my-zsh/lib/theme-and-appearance.zsh:2: colors: function definition file not found
/home/marcel/.oh-my-zsh/oh-my-zsh.sh:78: compinit: function definition file not found
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:80: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:93: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:100: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:109: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:119: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:129: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:138: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:144: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:147: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:150: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:153: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:163: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:166: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:168: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:182: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:193: command not found: compdef
$SPACESHIP_PROMPT_TRUNC is deprecated. Use $SPACESHIP_DIR_TRUNC instead.
spaceship_setup:3: add-zsh-hook: function definition file not found
spaceship_setup:4: add-zsh-hook: function definition file not found
$SPACESHIP_PROMPT_TRUNC is deprecated. Use $SPACESHIP_DIR_TRUNC instead.
spaceship_setup:3: add-zsh-hook: function definition file not found
spaceship_setup:4: add-zsh-hook: function definition file not found

J'ai regardé autour et beaucoup d'autres réponses suggèrent de courir compaudit. Courir cela me donne zsh: compaudit: function definition file not found.

Ce que j'ai essayé

  1. rm ~/.zcompdump*
  2. Réinstallation de oh-my-zsh
  3. Réinstallation de zsh à partir du source
  4. Ajout /usr/share/zsh/functionsà$fpath
  5. chown -R 755 /usr/share/zsh/functions
  6. Chargement et fonctionnement compaudità l' intérieur dezsh -f

Mon environnement:

  • uname -a: Linux Hermes 4.11.6-1-ARCH #1 SMP PREEMPT Sat Jun 17 08:19:42 CEST 2017 x86_64 GNU/Linux
  • zsh --version: zsh 5.3.1 (x86_64-unknown-linux-gnu)
  • which zsh: /usr/local/bin/zsh

Modifier:

J'ai confirmé qu'il s'agissait d'un problème d'autorisations. Si je fais

sudo zsh -f
autoload -U compaudit
compaudit

La commande fonctionne comme prévu. J'ai ensuite fait

sudo chmod 777 /usr/share/zsh/ -R # Just for testing I promise

et j'ai zsh: compaudit: function definition file not foundquand même quand je cours compaudit.

J'ai aussi essayé

sudo chown user:users /usr/share/zsh/ -R

et ça ne marche toujours pas. Si tous ces fichiers appartiennent à mon utilisateur ET à 777 ans, comment zsh fonctionne-t-il en tant que root et non en tant qu'utilisateur?

Marcel
la source
C'était mon $ FPATH. J'aurais dû savoir. J'ai essayé d'ajouter des éléments, mais je suppose que j'ai ajouté les mauvais éléments. Je viens de le copier depuis la racine car ce dernier fonctionne bien et maintenant tout est parfait. Merci beaucoup!
Marcel
Ecrivez cela plus gentiment dans une réponse et je vous donnerai la prime.
Marcel

Réponses:

4

Selon un indice relatif aux problèmes d'installation liés aux couleurs, aux plug-ins compinit et git n ° 4757 , il semble que la vérification du " contenu de la variable $ FPATH " indique le chemin correct pour l'emplacement d'installation des fonctions qui devrait aider à résoudre le problème.

De plus, copier le contenu de zsh dans un emplacement tel que la racine ou un chemin déjà défini $FPathpeut également aider à résoudre ce problème.

La première chose à faire est de vérifier le contenu de votre variable FPATH: echo $ FPATH. Dans une situation normale revenir quelque chose comme ça: /home/charmander/.oh-my-zsh/plugins/git:/home/charmander/.oh-my-zsh/functions:/home/charmander/.oh-my-zsh/completions:/home/charmander/.oh-my-zsh/plugins/python:/home/charmander/.oh-my-zsh/plugins/pip:/home/charmander/.oh-my-zsh/plugins/git:/home/charmander/.oh-my-zsh/functions:/home/charmander/.oh-my-zsh/completions:/usr/share/zsh/site-functions:/usr/share/zsh/5.0.2/functions.

Dans mon cas , il est revenu: /opt/intel/composer_xe_2011_sp1.7.256/mkl/include. Lorsque je tente de retirer .oh-my-zsh et exécuter uniquement zsh retourné ceci: /usr/share/zsh/5.0.2/scripts/newuser:6: zsh-newuser-install: function definition file not found. Recherche sur le Web J'ai trouvé ce rapport de bogue: zsh: Il manque beaucoup de définitions de fonctions dans zsh-newuser-install, compinit, etc. qui indiquent que le compilateur Intel pourrait avoir un écrasement de variable: /

Une solution à ce problème pourrait donc être d'insérer les lignes suivantes dans votre fichier .bash_profile, si vous ne pouvez pas exécuter cette commande chsh -s $ (qui zsh).

FPATH=/home/modelagem/beatriz.fonseca/.oh-my-zsh/plugins/python:/home/modelagem/beatriz.fonseca/.oh-my-zsh/plugins/pip:/home/modelagem/beatriz.fonseca/.oh-my-zsh/plugins/git:/home/modelagem/beatriz.fonseca/.oh-my-zsh/functions:/home/modelagem/beatriz.fonseca/.oh-my-zsh/completions:/usr/share/zsh/site-functions:/usr/share/zsh/5.0.2/functions

export FPATH

la source

De plus, selon un indice tiré de colors: fichier de définition de fonction introuvable # 4607 , il semble que d’autres aient résolu ce problème en ajoutant $HOME/usr/share/zsh/'version of zsh'/functionspour résoudre ce problème en installant zsh car cela $HOME/usrpeut être la cause de ce problème.


Lectures complémentaires

   FPATH  The search path for function definitions.  The directories in this  path  are  searched
                 for  a  file  with the same name as the function or command when a function with the -u
                 attribute is referenced and when a command is not found.  If an  executable  file  with
                 the name of that command is found, then it is read and executed in the current environ-ment. environment.
                 ment.  Unlike PATH, the current directory must be represented explicitly by  .   rather
                 than by adjacent : characters or a beginning or ending :.

la source


9.1 Fonctions de chargement automatique

Une fonction peut être marquée comme indéfinie à l'aide de la fonction intégrée autoload (ou 'functions -u' ou 'typeset -fu'). Une telle fonction n'a pas de corps. Lorsque la fonction est exécutée pour la première fois, le shell cherche sa définition en utilisant les éléments de la variable fpath.

la source

Pimp Juice IT
la source
2

Je voulais simplement ajouter une note indiquant que cette erreur peut également se produire si vous avez installé deux versions distinctes de ZSH. Assurez-vous que rien dans votre FPATH n’est incompatible avec la version de ZSH que vous utilisez pour votre shell de connexion réel.

Aaron Massey
la source