Ho pensato di aggiungere anche la seguente spiegazione aggiuntiva per un fallimento del completamento della bash: è troppo lungo per un commento e potrebbe essere utile per qualcuno che ha un problema con il completamento della bash, poiché presumibilmente questa è la domanda canonica "generale" a cui vengono indicati tutti i duplicati.
Anche se hai la riga appropriata nel tuo .bashrc
(come nella risposta sopra) e il bash-completion
pacchetto è installato, il completamento della bash può comunque funzionare male se hai shopt -s nullglob
o shopt -s failglob
nel tuo .bashrc
o .bash_aliases
.
I seguenti scenari sono stati testati con tutte le personalizzazioni dell'utente .bashrc
e .bash_aliases
rimossi per fornire un test equo, con la linea di completamento bash appropriata .bashrc
presente e bash-completion
installata.
1) Il primo scenario è quando hai shopt -s failglob
nel tuo .bashrc
o .bash_aliases
.
Quando si tenta di eseguire il tab rispettivamente di directory e file completi, si verificano questi errori:
cd Dbash: no match: "${COMP_WORDS[@]}"
cat pabash: no match: words[0]=${!ref}${COMP_WORDS[i]}
Tuttavia, i comandi verranno comunque completati correttamente.
2) Con shopt -s nullglob
abilitato, provare a completare una scheda o un file comporterà invece che tutto sia elencato, senza completamento:
cd Do
.adobe/ .gimp-2.6/ Podcasts/
.aptitude/ .gnome2/ Public/
.audacity-data/ .gnome2_private/ .pulse/
............
Ho abbreviato l'elenco qui, poiché era molto lungo e non è necessario riprodurlo tutto.
Ancora una volta, il completamento del comando funzionerà comunque.
Quindi, semplicemente rimuovendo shopt -s failglob
o shopt -s nullglob
potresti anche risolvere il problema degli errori con il completamento bash, supponendo che tu abbia la linea appropriata nella tua .bashrc
e bash-completion
installata.