哪里放bash完成脚本

时间:2017-07-15 06:34:48

标签: bash perl bash-completion

我已经实现了一些perl脚本,在某些情况下我必须将一些命令行args传递到我的程序中。我已经决定在我的项目中添加一些bash completion script。但是现在我被困在哪里把我的脚本按预期工作。请让我知道我可以在哪里放bash completion script

自定义Perl脚本位置

C:\scripts\tool\bin\ktools.pl

还将bin路径添加到系统变量。

我已将自动完成的脚本放在

C:\scripts\tool\bin\etc\bash_completion.d\ktools\foo

Bash完成脚本

_foo() 
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="--help --verbose --version"

    if [[ ${cur} == -* ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi
}
complete -F _foo ktools

当用户在命令行或git bash中键入ktools -- + press tab时,应自动建议命令。

2 个答案:

答案 0 :(得分:3)

我很确定你需要将它归入.bashrc(基本上包含它)。

打开~/.bashrc并写入(如果它不存在,您可能需要创建它)

source your_bash_file

然后,在您的终端中,通过

“刷新”
source ~/.bashrc

它应该有用。

答案 1 :(得分:0)

上面的答案非常不便,特别是如果您有多个完成脚本并且有其他人安装和使用您的程序时。

d的更方便的方法是在/ etc等目录中创建一个包含所有完成脚本的文件夹,然后在.bashrc源文件中将该目录中的所有内容存储。