ZSH-Abschlussfunktionen sind defekt

1841
Marcel

Meine oh-my-zsh-Installation, die seit fast einem Jahr funktioniert, ist gerade kaputt. Wenn ich ein Terminal öffne, bekomme ich:

/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 

Ich habe mich umgesehen und viele andere Antworten schlagen vor, zu laufen compaudit. Laufen das gibt mir zsh: compaudit: function definition file not found.

Was ich versucht habe:

  1. rm ~/.zcompdump*
  2. Oh-my-zsh neu installieren
  3. Neuinstallation von zsh von der Quelle
  4. Hinzufügen /usr/share/zsh/functionszu$fpath
  5. chown -R 755 /usr/share/zsh/functions
  6. Laden und Laufen compauditinzsh -f

Meine Umgebung:

  • 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

Bearbeiten:

Ich habe bestätigt, dass es sich um ein Berechtigungsproblem handelt. Wenn ich mache

sudo zsh -f autoload -U compaudit compaudit 

Der Befehl funktioniert wie erwartet. Das tat ich dann

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

und ich habe immer noch zsh: compaudit: function definition file not foundbeim rennen compaudit.

Ich habe es auch versucht

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

und es funktioniert immer noch nicht. Wenn sich alle diese Dateien im Besitz meines Benutzers befinden, wie funktioniert zsh als root und nicht als mein user?

2
Es war mein $ FPATH. Ich hätte es wissen sollen. Ich habe versucht, Sachen hinzuzufügen, aber ich schätze, ich habe die falschen Sachen hinzugefügt. Ich habe es einfach von root kopiert, weil root gut funktioniert und jetzt alles perfekt ist. Danke vielmals! Marcel vor 6 Jahren 0
Schreib das schöner in eine Antwort auf und ich gebe dir die Belohnung. Marcel vor 6 Jahren 0

2 Antworten auf die Frage

2
Pimp Juice IT

Wie aus einem Hinweis bei Installationsproblemen mit Farben, Compinit und Git-Plugin # 4757 hervorgeht, scheint die Überprüfung des Inhalts der " $ FPATH-Variablen " den korrekten Pfad für die Installation der Funktionen zu enthalten, um das Problem zu lösen.

Außerdem kann das Kopieren des zsh-Inhalts an einen Speicherort wie das Stammverzeichnis oder einen bereits definierten Pfad $FPathdazu beitragen, das Problem zu lösen.

Als Erstes müssen Sie den Inhalt der FPATH-Variablen überprüfen: echo $ FPATH. In einer normalen Situation so etwas zurückgeben: /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.

In meinem Fall ist es wieder: /opt/intel/composer_xe_2011_sp1.7.256/mkl/include. Wenn ich versuche, .oh-my-zsh zu entfernen und führen nur zurück zsh dies: /usr/share/zsh/5.0.2/scripts/newuser:6: zsh-newuser-install: function definition file not found. Suche im Web Ich habe diesen Fehlerbericht gefunden: zsh: Viele Funktionsdefinitionen fehlen zsh-newuser-install, compinit usw., die besagen , dass es eine von Intel-Compiler vorgenommene Überschreibung von Variablen gibt: /

Um dieses Problem zu beheben, können Sie die folgenden Zeilen in Ihr .bash_profile einfügen, wenn Sie diesen Befehl chsh -s $ (welches zsh) nicht ausführen können.

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 

Quelle

Laut einem Hinweis aus Farben: Funktionsdefinitionsdatei nicht gefunden # 4607, scheint es, dass andere dieses Problem gelöst haben, indem sie hinzugefügt haben $HOME/usr/share/zsh/'version of zsh'/functions, um dieses Problem zu lösen, indem zsh installiert wird, da $HOME/usrdieses Problem auftreten kann.


Lesen Sie weiter

 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 :. 

Quelle


9.1 Funktionen zum automatischen Laden

Eine Funktion kann mit dem eingebauten Autoload (oder mit den Funktionen "-u" oder "typeset -fu") als undefiniert markiert werden. Eine solche Funktion hat keinen Körper. Wenn die Funktion zum ersten Mal ausgeführt wird, sucht die Shell mithilfe der Elemente der Variablen fpath nach ihrer Definition.

Quelle

2
Aaron Massey

Ich wollte nur eine kurze Anmerkung hinzufügen, dass dieser Fehler auch auftreten kann, wenn zwei separate Versionen von ZSH installiert sind. Stellen Sie sicher, dass Sie nichts in Ihrem FPATH haben, das mit der Version von ZSH nicht kompatibel ist, die Sie für Ihre tatsächliche Login-Shell verwenden.