Завершение 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.
Код завершения команды пропускает пробелы и операторы присваивания, прежде чем искать слово имени команды, которое должно быть завершено.