Я думал, что я также добавлю следующее дополнительное объяснение неудачи завершения 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 , пытаясь вставить вкладку plete каталог или файл вместо этого приведет ко всему, что указано, без завершения:
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.