Pensei em adicionar também a seguinte explicação adicional para uma falha na conclusão do bash - é muito longo para um comentário e pode ser útil para alguém que tenha um problema com o término do bash, pois provavelmente essa é a pergunta canônica 'geral' à qual todas as duplicatas são referidas.
Mesmo se você tiver a linha apropriada no seu .bashrc
(como na resposta acima) e o bash-completion
pacote instalado, a conclusão do bash ainda poderá funcionar mal se você tiver um shopt -s nullglob
ou shopt -s failglob
no seu .bashrc
ou .bash_aliases
.
Os cenários a seguir foram testados com todas as personalizações do usuário .bashrc
e .bash_aliases
removidos para fornecer um teste justo, com a linha de conclusão do bash apropriada no .bashrc
presente e com a bash-completion
instalada.
1) O primeiro cenário é quando você tem shopt -s failglob
no seu .bashrc
ou .bash_aliases
.
Ao tentar tabular diretórios e arquivos completos, respectivamente, esses erros ocorrerão:
cd Dbash: no match: "${COMP_WORDS[@]}"
cat pabash: no match: words[0]=${!ref}${COMP_WORDS[i]}
No entanto, os comandos ainda serão concluídos com êxito.
2) Com shopt -s nullglob
ativado, tentar tabular um diretório ou um arquivo levará a que tudo seja listado, sem conclusão:
cd Do
.adobe/ .gimp-2.6/ Podcasts/
.aptitude/ .gnome2/ Public/
.audacity-data/ .gnome2_private/ .pulse/
............
Abreviei a lista aqui, pois era muito longa e não era necessário reproduzir tudo.
Novamente, a conclusão do comando ainda funcionará.
Portanto, basta remover shopt -s failglob
ou shopt -s nullglob
também resolver o problema de erros com a conclusão do bash, supondo que você tenha a linha apropriada no seu .bashrc
e bash-completion
instalada.