Завершение Bash не работает, когда определена переменная среды

Когда я определяю встроенную переменную среды следующим образом: env_variable=true commandмой пользовательский скрипт завершения bash не работает. Пример:

user@host in /tmp/tmp.6DRvQAkpFe
> ls
user@host in /tmp/tmp.6DRvQAkpFe
> docker-ssh 
container1 container2 container3 puppetmaster           
user@host in /tmp/tmp.6DRvQAkpFe
> VARIABLE=TEST docker-ssh 

Последняя команда не выполняет автозаполнение, как предыдущая.

Моя функция завершения bash выглядит так:

_docker-ssh() {
    local running=$(docker ps --format '{{.Names}}') 
    local cur prev opts base

    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    COMPREPLY=($(compgen -W "${running}" -- ${cur}))

    return 0
}

complete -F _docker-ssh docker-ssh

Есть ли что-то, что мне не хватает в моем COMPREPLY что бы учитывать переменные среды?

1 ответ

Требуемое поведение - это функция, представленная в bash 4.3.

Код завершения команды пропускает пробелы и операторы присваивания, прежде чем искать слово имени команды, которое должно быть завершено.

Другие вопросы по тегам