当我实现一个 bash 自动完成功能时,有些东西让我感到困惑,我将把它放在/etc/bash_completion.d/
为了实现某些功能,我想:
从变量中删除分词字符冒号()并在开头$COMP_WORDBREAKS
添加一个斜杠( ) 。/
$COMP_WORDBREAKS
COMP_WORDBREAKS=" /'><=;|&("
_mytool()
{
local cur=${COMP_WORDS[COMP_CWORD]}
compopt -o nospace
# my implement here
COMPREPLY=( $(compgen ..........my_implement......... -- $cur) )
}
complete -F _mytool mytool
但是,我无法COMP_WORDBREAKS
直接重置,因为该值与其他完成脚本共享。到调用完成函数时,变量COMP_WORDS
数组已经被填充,因此本地更改COMP_WORDBREAKS
无效。
是否有任何解决方案可以更改COMP_WORDBREAKS
一个完成脚本而不影响其他脚本?
$ echo $BASH_VERSION
4.2.10(1)-release