/etc/bash_completion.d/に配置する bash 自動補完機能を実装すると、混乱することがあります。
:
いくつかの機能を実現するために、変数から区切り文字のコロン () を削除し、の先頭にスラッシュ ( ) を$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
1 つの補完スクリプトを変更し、他のスクリプトに影響を与えないための解決策はありますか?
$ echo $BASH_VERSION
4.2.10(1)-release