【发布时间】:2012-05-18 17:05:52
【问题描述】:
当我实现一个 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
【问题讨论】:
标签: bash shell autocomplete bash-completion