J'essaie d'utiliser la complétion par tabulation pour les commandes dans Ubuntu 11.04 Bêta 1, en exécutant toutes les dernières mises à jour, mais cela ne semble pas fonctionner. (Bien que le paquet bash-completion soit installé)
La complétion par onglets ne fonctionne correctement que pour les répertoires ou les fichiers.
Des idées où creuser?
Vérifiez si vous avez le fragment suivant dans votre .bashrc (devrait être là par défaut)
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
Je pensais également ajouter l'explication supplémentaire suivante pour un échec d'achèvement de Bash - c'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 il s'agit vraisemblablement de la question canonique "générale" à laquelle tous les doublons sont référé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'exécution de bash peut toujours ne pas fonctionner correctement si vous avez soit 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 de .bashrc
et .bash_aliases
personnalisées par l'utilisateur, afin de permettre un test correct, avec la ligne d'achèvement Bash appropriée dans .bashrc
present et avec bash-completion
installé.
1) Le premier scénario est lorsque vous avez 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 se termineront toujours avec succès.
2) Lorsque shopt -s nullglob
est activé, le fait de compléter un répertoire ou un fichier par un onglet conduira à la liste complète des éléments, sans aucun achèvement:
cd Do
.Adobe/ .gimp-2.6/ Podcasts/
.aptitude/ .gnome2/ Public/
.audacity-data/ .gnome2_private/ .Pulse/
............
J'ai coupé la liste ici, car c'était très long et pas nécessaire de tout reproduire.
Encore une fois, l’achèvement de la commande fonctionnera toujours.
Ainsi, retirer simplement shopt -s failglob
ou shopt -s nullglob
pourrait également résoudre le problème des erreurs d’achèvement de bash, en supposant que vous ayez la ligne appropriée dans votre .bashrc
et bash-completion
.
En plus de la modification du fichier /etc/bash.bashrc
(voir d’autres réponses), vous devrez peut-être installer le paquetage bash-completion
.
Vérifiez si le fichier /etc/bash_completion
existe. Sinon:
Sudo apt-get install bash-completion
(Dans mon installation de Debian 7, il n'était pas installé initialement)
Aussi basique que cela puisse paraître, assurez-vous que bash est votre shell actif
echo $Shell
Je viens de passer à Ubuntu 14.04.1 LTS et je n'avais pas de complétion automatique des onglets, même après avoir suivi les conseils donnés sur ce message, seulement pour réaliser que mon shell était défini sur /bin/sh
et non pas /bin/bash
.
Mise à jour vers Ubuntu 14.04.01
Vérifiez si vous avez le fragment suivant dans votre .bashrc (devrait être là par défaut)
Sudo vim /etc/bash.bashrc (tapez "i" pour éditer le fichier)
# enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
Elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
Ne commentez pas 7 lignes ci-dessus
Enregistrer le fichier "esc + w + q + enter"
Redémarrer Bash
exec bash