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-functions
Debianとその派生物がそれを使用します/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
/usr
make install
/usr/local
。