Что-то меня смущает, когда я реализую функцию автозаполнения 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