Funções de conclusão do ZSH quebradas

2

Minha instalação do oh-my-zsh que está funcionando há quase um ano acabou de ser quebrada. Quando abro um terminal, recebo:

/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

Eu olhei em volta e muitas outras respostas sugerem a execução de compaudit . Correndo isso me dá zsh: compaudit: function definition file not found .

O que tentei:

  1. rm ~/.zcompdump*
  2. Reinstalando o oh-my-zsh
  3. Reinstalando o zsh da origem
  4. Adicionando /usr/share/zsh/functions a $fpath
  5. chown -R 755 /usr/share/zsh/functions
  6. Carregando e executando compaudit dentro de zsh -f

Meu ambiente:

  • 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

Editar:

Confirmei que é um problema de permissões. Se eu fizer

sudo zsh -f
autoload -U compaudit
compaudit

O comando funciona conforme o esperado. Eu então fiz

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

e ainda tenho zsh: compaudit: function definition file not found ao executar compaudit .

Eu também tentei

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

e ainda não está funcionando. Se todos esses arquivos são de propriedade do meu usuário E são 777 como o zsh funciona como root e não como meu usuário?

    
por Marcel 26.06.2017 / 16:50

2 respostas

2

De acordo com uma dica em problemas de instalação com cores, o plug-in de compinit e git # 4757 , parece que verificar o " $ FPATH variable content " contém o caminho correto para onde você instalou as funções deve ajudar a resolver o problema.

Além disso, copiar o conteúdo do zsh para um local como a raiz ou um caminho já definido em $FPath pode ajudar a resolver esse problema também.

The first thing to do is verify your FPATH variable content: echo $FPATH. In a normal situation return something like that: /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 my case it returned: /opt/intel/composer_xe_2011_sp1.7.256/mkl/include. When I try to remove .oh-my-zsh and run only zsh returned this: /usr/share/zsh/5.0.2/scripts/newuser:6: zsh-newuser-install: function definition file not found. Search in web I found this bug report: zsh: Many function definitions are missing zsh-newuser-install, compinit, etc that say it could have a variable overwrite made by Intel compiler :/

So a workaround to this problem could be insert the following lines to your .bash_profile, if you can not run this command chsh -s $(which 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

source

Além disso, como por um indício de cores: arquivo de definição de função não encontrado # 4607 , Parece que outras pessoas resolveram esse problema adicionando $HOME/usr/share/zsh/'version of zsh'/functions para resolver isso, pois a instalação do zsh como $HOME/usr pode causar esse problema.

Leitura adicional

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

source

9.1 Autoloading Functions

A function can be marked as undefined using the autoload builtin (or ‘functions -u’ or ‘typeset -fu’). Such a function has no body. When the function is first executed, the shell searches for its definition using the elements of the fpath variable.

source

    
por 30.06.2017 / 15:48
2

Eu só queria adicionar uma pequena nota de que esse erro também pode acontecer se você tiver duas versões separadas do ZSH instaladas. Certifique-se de que você não tem nada no seu FPATH que seja incompatível com a versão do ZSH que você está usando para o seu shell de login atual.

    
por 16.07.2017 / 04:48

Tags