Я подумал, что я бы также добавил следующее дополнительное объяснение неудачи завершения bash - это слишком долго для комментария и может быть полезно для кого-то, у кого есть проблема с завершением bash, так как предположительно это «общий» канонический вопрос, к которому все дубликаты передаются.
Даже если у вас есть соответствующая строка в вашем .bashrc(как в ответе выше) и bash-completionустановленный пакет, завершение bash все равно может работать некорректно, если у вас есть либо shopt -s nullglobили shopt -s failglobв вашем, .bashrcили .bash_aliases.
Следующие сценарии были протестированы со всеми пользовательскими настройками .bashrcи .bash_aliasesудалены, чтобы дать честный тест, с соответствующей линией завершения bash в .bashrcнастоящее время и с bash-completionустановленной.
1) Первый сценарий, когда у вас есть shopt -s failglobв вашем .bashrcили .bash_aliases.
При попытке добавить полные каталоги и файлы соответственно, эти ошибки произойдут:
cd Dbash: no match: "${COMP_WORDS[@]}"
cat pabash: no match: words[0]=${!ref}${COMP_WORDS[i]}
Тем не менее, команды все равно будут успешно выполнены.
2) Если shopt -s nullglobвключено, попытка дополнить каталог каталогом или файлом приведет к тому, что все будет в списке без завершения:
cd Do
.adobe/ .gimp-2.6/ Podcasts/
.aptitude/ .gnome2/ Public/
.audacity-data/ .gnome2_private/ .pulse/
............
Я сократил список здесь, так как он был очень длинным и не нужно воспроизводить все это.
Опять же, завершение команды все равно будет работать.
Таким образом, просто устранение shopt -s failglobили shopt -s nullglobтакже может решить проблему ошибок с завершением bash, при условии, что у вас есть соответствующая линия в вашем .bashrcи bash-completionустановлен.