Apt-get autocompletion

9

J'utilise actuellement Debian Wheezy 64 bits.

J'ai des problèmes avec la complétion automatique pour apt-get. J'ai bash-complètement installé.

Si je suis connecté en tant que root dans un shell, je peux utiliser la complétion automatique pour apt-get (ex: apt-get install wicd [tab] [tab ]) et il me montrera tous les packages qui correspondent à cela. Mais si j'essaie d'utiliser la complétion automatique pour apt-get dans un autre utilisateur non root (même avec sudo), cela ne fonctionnera pas du tout. Je peux compléter automatiquement d'autres choses comme les noms de fichiers.

De l'aide?

J'ai le code suivant dans mon .bashrc et / etc / profile

 if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
 fi
Dennis Linuz
la source
1
Tout d'abord, vérifiez si root et les autres utilisateurs ont le même shell. Sinon, c'est la raison du comportement différent. Sinon, essayez ceci: 'apt-cache --no-generate pkgnames "wicd"'. Est-ce que ça marche? C'est ce que bash utilise pour générer l'achèvement de «apt-get install wicd [TAB]».
angus
Ils utilisent tous les deux le même shell, bash. la commande apt-cache que vous m'avez donnée fonctionne et affiche une liste de tous les paquets wicd. De plus, ce que j'ai découvert, c'est lorsque mon ordinateur démarre pour la première fois et que je me connecte au shell pour la première fois (je n'ai pas de connexion gui), la saisie semi-automatique apt-get fonctionnera avec n'importe quel compte. Mais si j'exécute mon gestionnaire de fenêtres fvwm-crystal avec startx, puis j'ouvre un terminal, cela ne fonctionnera plus avec mon compte utilisateur. Il fonctionne toujours avec root en fvwm-crystal.
Dennis Linuz
OK, c'est ce qui peut arriver. / etc / profile et .bash_profile sont exécutés sur des shells de connexion. Autrement dit, lorsque vous vous connectez sur la console, ou lorsque vous exécutez «su». Étant donné que dans ces cas, l'achèvement fonctionne, / etc / profile fonctionne. Ce qui reste est ~ / .bashrc. Vérifiez que la ligne '. / etc / bash_completion 'est vraiment en cours d'exécution. Mettez quelque chose comme «echo OK» devant lui, ouvrez un nouveau terminal et vérifiez qu'il dit «OK».
angus
avez-vous déjà testé ZSH?
Mohammad Efazati
Votre .bashrc est peut-être complètement manquant; ce fut mon cas
Galvani

Réponses:

6

Votre /etc/bash_completionfichier doit être manquant.

sudo apt-get install bash-completion

devrait résoudre tous vos problèmes.

Étant donné que vous avez déjà des lignes non commentées /etc/bash.bashrccomme Faheem Mitha et d'autres l'ont souligné, cela devrait fonctionner maintenant:

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

Raison: le bash-completionpaquet a maintenant ce fichier (/ etc / bash_completion). Il était dans le bashpaquet, mais plus maintenant.

info sur le changement de package

n611x007
la source
que doit contenir le fichier / etc / bash_completion ? J'ai exécuté la commande install bash-complétement et tout est déjà la dernière version mais mon fichier de complétion bash est vide
fifamaniac04
2

Essayez d'exécuter ceci:

chsh -s /bin/bash $USER
HaEl
la source
1

Je ne me souviens pas si cela est nécessaire, mais essayez de décommenter les lignes correspondantes /etc/bash.bashrcsi elles ne l'ont pas déjà été, à savoir

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi
Faheem Mitha
la source
0

Si je me souviens bien, l'autocomplétion bash pour les paramètres de commande se fait via la completecommande. Vous devriez avoir un script d'achèvement apt-get chargé par l'utilisateur root bashrc (peut-être /root/.bashrc), vous avez donc besoin d'une connexion root pour l'exécuter. Sudo ne charge pas les scripts de connexion root, il vous donne juste des privilèges.

Peut-être que vous manquez ce script de saisie semi-automatique pour les utilisateurs non root, donc ils n'ont pas de saisie semi-automatique configurée pour apt-get. Si cela est vrai, chargez ces fonctions pour les utilisateurs ayant TOUS les privilèges dans le fichier sudoers.

D4RIO
la source