Обнаружение наличия завершения Bash в bash

Как определить, загружен ли пакет завершения bash в мою оболочку bash? Начиная с версии 2.1 bash-completion (включенной в Debian 8), нет никакой переменной оболочки, указывающей на это, за исключением BASH_COMPLETION_COMPAT_DIR, которая не является надежным индикатором.


person Wirawan Purwanto    schedule 10.03.2016    source источник
comment
Вы получили несколько ответов на свои вопросы, но ни один из них не был признан правильным или полезным. Вы можете оценить их и, по возможности, принять их как правильные или полезные.   -  person miken32    schedule 18.03.2016


Ответы (2)


Лично я не видел случаев, когда BASH_COMPLETION_COMPAT_DIR не установлено.

Вы можете использовать команду complete с -p, чтобы получить список всех или определенных завершений. Я не уверен, насколько это будет надежно, учитывая, что вы можете загружать и выгружать их по желанию.

complete -p

Еще один вариант — проверить наличие одного из наиболее уникальных имен функций с помощью команды type и посмотрите, является ли это функцией.

type -t _get_comp_words_by_ref

Этот вопрос и ответ также может дать некоторое представление.

person miken32    schedule 10.03.2016
comment
BASH_COMPLETION_COMPAT_DIR больше не определен, см. github.com/scop/bash-completion/commit/< /а> - person Henri Menke; 16.06.2020

  1. Перейдите в каталог, в котором есть как файлы, так и подкаталоги.

  2. Введите cd <TAB><TAB> и посмотрите на список результатов автозаполнения.

Если результаты автозаполнения содержат только каталоги (без файлов), то Bash Completion установлен.

Если результаты автозаполнения включают файлы, то Bash Completion не установлен. (Например, если вы попробуете это в контейнере Docker Ubuntu).

person wisbucky    schedule 08.07.2019