Как определить, загружен ли пакет завершения bash в мою оболочку bash? Начиная с версии 2.1 bash-completion
(включенной в Debian 8), нет никакой переменной оболочки, указывающей на это, за исключением BASH_COMPLETION_COMPAT_DIR
, которая не является надежным индикатором.
Обнаружение наличия завершения Bash в bash
Ответы (2)
Лично я не видел случаев, когда BASH_COMPLETION_COMPAT_DIR
не установлено.
Вы можете использовать команду complete
с -p
, чтобы получить список всех или определенных завершений. Я не уверен, насколько это будет надежно, учитывая, что вы можете загружать и выгружать их по желанию.
complete -p
Еще один вариант — проверить наличие одного из наиболее уникальных имен функций с помощью команды type
и посмотрите, является ли это функцией.
type -t _get_comp_words_by_ref
Этот вопрос и ответ также может дать некоторое представление.
BASH_COMPLETION_COMPAT_DIR
больше не определен, см. github.com/scop/bash-completion/commit/< /а>
- person Henri Menke; 16.06.2020
Перейдите в каталог, в котором есть как файлы, так и подкаталоги.
Введите
cd <TAB><TAB>
и посмотрите на список результатов автозаполнения.
Если результаты автозаполнения содержат только каталоги (без файлов), то Bash Completion установлен.
Если результаты автозаполнения включают файлы, то Bash Completion не установлен. (Например, если вы попробуете это в контейнере Docker Ubuntu).