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-completionpacchetto è installato, il completamento della bash può comunque funzionare male se hai shopt -s nullglobo shopt -s failglobnel tuo .bashrco .bash_aliases.
I seguenti scenari sono stati testati con tutte le personalizzazioni dell'utente .bashrce .bash_aliasesrimossi per fornire un test equo, con la linea di completamento bash appropriata .bashrcpresente e bash-completioninstallata.
1) Il primo scenario è quando hai shopt -s failglobnel tuo .bashrco .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 nullglobabilitato, 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 failglobo shopt -s nullglobpotresti anche risolvere il problema degli errori con il completamento bash, supponendo che tu abbia la linea appropriata nella tua .bashrce bash-completioninstallata.