作为软件包维护者,我应该在哪里安装 zsh 完成文件

作为软件包维护者,我应该在哪里安装 zsh 完成文件

我有一个包含 zsh 完成脚本的项目,当用户安装软件时我应该将完成文件复制到哪里(例如通过运行make install,apt installpacman -Si...)?

我知道其他 shell 有一些特定的完成脚本目录,例如:
->/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 开始,默认函数load path( $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

相关内容