我有用户访问(没有根)到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/
目录。
编辑文件: nano ~/.bash_completion
,添加如下内容:
for bcfile in ~/.bash_completion.d/* ; do . $bcfile done
make目录: mkdir ~/.bash_completion.d
~/.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
. ~/.bash_completion