web-dev-qa-db-ja.com

ZSH完了機能が壊れています

ほぼ1年間機能していた私のoh-my-zshインストールが壊れたところです。ターミナルを開くと、次のようになります。

_/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
_

私は周りを見回しましたが、他の多くの回答はcompauditを実行することを提案しています。これを実行すると、_zsh: compaudit: function definition file not found_が得られます。

私が試したこと:

  1. _rm ~/.zcompdump*_
  2. Oh-my-zshを再インストールする
  3. ソースからzshを再インストールする
  4. _/usr/share/zsh/functions_を_$fpath_に追加する
  5. _chown -R 755 /usr/share/zsh/functions_
  6. _zsh -f_内でcompauditをロードして実行する

私の環境:

  • _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_

編集:

権限の問題であることを確認しました。私が行った場合

_Sudo zsh -f
autoload -U compaudit
compaudit
_

コマンドは期待どおりに機能します。それから私はしました

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

compauditを実行すると、まだ_zsh: compaudit: function definition file not found_が表示されます。

私も試しました

_Sudo chown user:users /usr/share/zsh/ -R
_

そしてそれはまだ機能していません。これらすべてのファイルが私のユーザーによって所有されており、777である場合、zshはユーザーとしてではなくrootとしてどのように機能しますか?

4
Marcel

colors、compinit、gitプラグイン#4757のインストールの問題 の手がかりによると、 "$ FPATH変数の内容 "には、問題の解決に役立つ関数をインストールした場所の正しいパスが含まれています。

さらに、zshの内容をルートや$FPathですでに定義されているパスなどの場所にコピーすると、この問題の解決にも役立つ場合があります。

最初に行うことは、FPATH変数の内容を確認することです:echo $ FPATH。通常の状況では、次のようなものを返します:/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

私の場合、それは戻りました:/opt/intel/composer_xe_2011_sp1.7.256/mkl/include。 .oh-my-zshを削除して実行しようとすると、zshのみが次のように返されます:/usr/share/zsh/5.0.2/scripts/newuser:6: zsh-newuser-install: function definition file not found。 Webで検索このバグレポートを見つけました: zsh:多くの関数定義にzsh-newuser-install、compinitなどがありません インテル®コンパイラーによって変数が上書きされる可能性があると言っています:/

したがって、このコマンドchsh -s $(which zsh)を実行できない場合、この問題の回避策は、.bash_profileに次の行を挿入することです。

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

ソース

さらに、 colors:関数定義ファイルが見つかりません#4607 からの手がかりに従って、他の人が$HOME/usr/share/zsh/'version of zsh'/functionsを追加して、zshを$HOME/usrとしてインストールすることでこの問題を解決したようです。この問題を引き起こす可能性があります。


参考文献

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

ソース


9.1自動読み込み機能

関数は、組み込みのautoload(または「functions-u」または「typeset-fu」)を使用して未定義としてマークできます。そのような機能には本体がありません。関数が最初に実行されるとき、シェルはfpath変数の要素を使用してその定義を検索します。

ソース

4
Pimp Juice IT

2つの別々のバージョンのZSHがインストールされている場合にも、このエラーが発生する可能性があるという短いメモを追加したいと思います。実際のログインシェルに使用しているZSHのバージョンと互換性のないものがFPATHにないことを確認してください。

2
Aaron Massey