Что-то меня смущает, когда я реализую функцию автозаполнения bash, которую я поставлю в /etc/bash_completion.d/
Чтобы достичь некоторой функции, я хочу удалить слово break characters colour (:
) из переменной $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
Однако я не могу reset COMP_WORDBREAKS
напрямую, потому что это значение используется совместно с другими сценариями завершения. К тому времени, как вызывается функция завершения, массив переменных COMP_WORDS
уже заполнен, поэтому локальные изменения COMP_WORDBREAKS
не влияют.
Есть ли какое-либо решение для изменения COMP_WORDBREAKS
в одном завершении script и никакого эффекта для другого script?
$ echo $BASH_VERSION
4.2.10(1)-release