Je pensais aussi ajouter l'explication supplémentaire suivante pour un échec de la complétion de bash - il est trop long pour un commentaire et peut être utile pour quelqu'un qui a un problème avec l'achèvement de bash, car c'est probablement le canonique "général" question à laquelle tous les doublons sont renvoyés.
Même si vous avez la ligne appropriée dans votre .bashrc
(comme dans la réponse ci-dessus) et le package bash-completion
installé, l’achèvement de bash peut toujours mal fonctionner si vous avez shopt -s nullglob
ou shopt -s failglob
dans votre .bashrc
ou .bash_aliases
.
Les scénarios suivants ont été testés avec toutes les personnalisations utilisateur de .bashrc
et .bash_aliases
supprimées pour donner un test correct, avec la ligne d’achèvement de bash appropriée dans .bashrc
present et avec bash-completion
installé.
1) Le premier scénario concerne le shopt -s failglob
dans votre .bashrc
ou .bash_aliases
.
Lorsque vous essayez de tabuler des répertoires et des fichiers complets respectivement, ces erreurs se produisent:
cd Dbash: no match: "${COMP_WORDS[@]}"
cat pabash: no match: words[0]=${!ref}${COMP_WORDS[i]}
Cependant, les commandes s’achèveront toujours avec succès.
2) Lorsque shopt -s nullglob
est activé, si vous essayez de compléter un répertoire ou un fichier, cela signifie que tout est répertorié, sans achèvement:
cd Do
.adobe/ .gimp-2.6/ Podcasts/
.aptitude/ .gnome2/ Public/
.audacity-data/ .gnome2_private/ .pulse/
............
J'ai coupé court la liste ici, car il était très long et pas nécessaire de tout reproduire.
Encore une fois, l’achèvement de la commande fonctionnera néanmoins.
Donc, supprimer simplement shopt -s failglob
ou shopt -s nullglob
pourrait également résoudre le problème des erreurs lors de l'achèvement de bash, en supposant que vous ayez la ligne appropriée dans votre .bashrc
et bash-completion
installé.