パッケージマネージャとして、zshコンプリートファイルをどこにインストールする必要がありますか?

パッケージマネージャとして、zshコンプリートファイルをどこにインストールする必要がありますか?

zsh完了スクリプトを含むプロジェクトがあります。ユーザーがソフトウェアをインストールするとき(たとえば、make installまたはapt install...pacman -Siを実行して)、完成ファイルをどこにコピーする必要がありますか?

他のシェルには、次のような特定の完了スクリプトディレクトリがあることがわかります。
->/usr/share/fish/vendor_completions.d
強く打つ->/usr/share/bash-completion/completions

zshはどうですか?
扱いにくい->/usr/share/???

答え1

zsh補完機能に使用されるパスは設定可能です(参照:${fpath[@]})しかし従うのは安全です。システム例:デフォルトでは、インストールプレフィックスの下にインストールされますが、share/zsh/site-functions上書きできます。インストールプレフィックスは/usr/localデフォルト値でなければなりません。

パッケージングを完了するには、Fedoraとその派生物がそれを使用し、/usr/share/zsh/site-functionsDebianとその派生物がそれを使用します/usr/share/zsh/vendor-completions。ここで使用されている特定のディレクトリを気にする必要はありませんが、この例では完了インストールディレクトリの上書きを許可するのが有用な理由について説明します。

パッケージ化されていない完成の場合、両方のディストリビューションがサポートされます/usr/local/share/zsh/site-functions

答え2

zsh 5.0.7から開始、デフォルトの関数ロードパス($fpath)にはが含まれます/usr/local/share/zsh/site-functions。だからそこに完成機能をインストールしてください。

/usr/share/fish/vendor_completions.d/usr/share/fish/vendor_completions.d両方が間違っていることに注意してください。ランタイムは、make install以下またはその他のセクションを追加または変更しないでください/usr/bin/usr/lib明示的に/usr/share指示がない限り)。ディストリビューションによってインストールされたファイル用に予約されています。入力などで手動で設置/usr/usr/local/usrmake install/usr/local

関連情報