Я подумав, що я також додам наступне додаткове пояснення провалу завершення 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встановлена відповідна лінія .