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