开发和维护bash和zsh的shell完井

开发和维护bash和zsh的shell完井,bash,zsh,maintainability,tab-completion,Bash,Zsh,Maintainability,Tab Completion,我已经为命令行实用程序编写了bash完成。 我需要支持zsh。 保持bash和zsh完成的最佳/标准方法是什么? 我可以编写单独的zsh补全,但我不想为每个shell维护单独的补全 我可以在zsh()中使用bash completion,但我不想强制用户在安装过程中手动设置工具或修改他们的~/.zshrc 其他人将使用Homebrew/Linuxbrew安装此实用程序。我可以修改安装公式。以下代码可以作为bash和zsh的完成代码。 这是可行的,但不是理想的解决方案。小心使用 if [ ! -z

我已经为命令行实用程序编写了bash完成。 我需要支持zsh。
保持bash和zsh完成的最佳/标准方法是什么?

我可以编写单独的zsh补全,但我不想为每个shell维护单独的补全

我可以在zsh()中使用bash completion,但我不想强制用户在安装过程中手动设置工具或修改他们的
~/.zshrc


其他人将使用Homebrew/Linuxbrew安装此实用程序。我可以修改安装公式。

以下代码可以作为bash和zsh的完成代码。
这是可行的,但不是理想的解决方案。小心使用

if [ ! -z "$ZSH_NAME" ]; then 
    # zsh sets $ZSH_NAME variable so it can be used to detect zsh
    # following enables using bash-completion under zsh
    autoload bashcompinit
    bashcompinit
fi

_example() {
    # arbitrary bash-completion function
    local cur prev

    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    if [[ ${prev} == example ]] ; then
        COMPREPLY=( $(compgen -W "--help --something" -- ${cur}) )
    else
        COMPREPLY=()
    fi
    return 0
}  
# you can use complete builtin in both bash and zsh now
complete -F _example example