还有,当我实现一个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