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