Wie kann COMP_WORDBREAKS zurückgesetzt werden, ohne ein anderes Abschlussskript zu beeinflussen?

Es gibt etwas, das mich verwirrt, wenn ich eine Bash-Autovervollständigungsfunktion implementiere, in die ich sie einfügen werde/etc/bash_completion.d/

Um eine Funktion zu erreichen, möchte ich das Wort Umbruch Zeichen Doppelpunkt entfernen (:) aus Variable$COMP_WORDBREAKS und einen Schrägstrich hinzufügen (/) am Anfang von$COMP_WORDBREAKS.

<code>COMP_WORDBREAKS=" /'><=;|&("
_mytool()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    compopt -o nospace

    # my implement here

    COMPREPLY=( $(compgen ..........my_implement......... -- $cur) )
}
complete -F _mytool mytool
</code>

Ich kann jedoch nicht zurücksetzenCOMP_WORDBREAKS direkt, weil der Wert mit anderen Abschlussskripten geteilt wird. Zu dem Zeitpunkt, an dem die Vervollständigungsfunktion aufgerufen wird, ist sie variabelCOMP_WORDS Array wurde bereits gefüllt, also lokal geändertCOMP_WORDBREAKS haben keine Wirkung.

Gibt es eine Lösung für den WechselCOMP_WORDBREAKS In einem Abschlussskript und ohne Auswirkung auf ein anderes Skript?

<code>$ echo $BASH_VERSION
4.2.10(1)-release
</code>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage