用户定义的bash_completion.d脚本的标准位置?

我有用户访问(没有根)到Linux(Suse)机器,我开发了一些bash脚本和相应的bash自动完成规则。

由于脚本只属于我的用户,因此我需要完整的规则只对我“活跃”(一部分来自我没有root写入权限的事实),将我的bash_completion脚本放到/etc/bash_completion.d/文件夹中不是一个选项。

目前我给自己的文件命名为.bash_completion.myscript ,并直接从我的.bashrc文件中.bash_completion.myscript ,但是我想知道是否有任何其他的“标准”方式来实现这些结果,这已经在bash实现中考虑过了。

例如,创build一个文件夹/home/myuser/.bash_completion.d/

使用~/.bash_completion文件。

从Bash完成常见问题解答 :

问:如何插入我自己的本地完成而不必
每次发行新版本时都重新插入它们?

答:把它们放在〜/ .bash_completion中,这个在最后parsing
主要完成脚本。 另见下一个问题。

问:我创作/维护软件包X并希望维护自己的软件
这个包的完成代码。 我应该把它放在哪里
那交互式的bash shell会find它并且发现它?

A.安装在指向的目录之一
bash-completion的pkgconfig文件variables。 那里有两个
备选scheme:推荐的是“completionsdir”(与它一起
“pkg-config –variable = completionsdir bash-completion”)
完成是基于被调用的命令名称按需加载的,
所以一定要命名你的完成文件,并包括
例如文件提供完成时的符号链接
为一个以上的命令。 另一个是目前的
向后兼容的原因是“compatdir”(与它一起
“pkg-config –variable = compatdir bash-completion”)
在加载bash_completion时加载。

这里是一个本地用户可以有一个工作~/.bash_completion.d/目录。

  1. 编辑文件: nano ~/.bash_completion ,添加如下内容:

     for bcfile in ~/.bash_completion.d/* ; do . $bcfile done 
  2. make目录: mkdir ~/.bash_completion.d

  3. 编辑文件: ~/.bash_completion.d/myscript ,添加如下内容:
 _myscript_tab_complete () { local cur prev opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" words="-f -h --etc" COMPREPLY=( $(compgen -W "${words}" -- ${cur}) ) return 0 } complete -F _myscript_tab_complete myscript 
  1. 源.bash_completion:。 . ~/.bash_completion