Je suis sur Debian Jessie 8.6. J'ai remarqué ça apt-get
obtient l'autocomplétion bash attendue lorsque vous appuyez sur tab pour les packages et la commande, mais lorsque vous essayez de l'utiliser avec apt
cela ne fonctionne pas. Je me souviens d'avoir utilisé xubuntu 16.04 où cela fonctionnait, donc je trouve étrange que cela ne fonctionne pas ici. Existe-t-il un moyen de l'activer également pour la commande apt
? Si c'est le cas, comment?
Debian ne vient pas avec "bash-complétement" installé et activé.
Pour résoudre ce problème, exécutez (en tant que root):
apt-get install bash-completion
Ensuite, vous avez deux options. Vous pouvez soit (1) l'activer pour chaque utilisateur pour vous-même, soit (2) l'activer globalement.
Si vous souhaitez l'activer uniquement pour votre utilisateur, modifiez ~/.bashrc
- ajoutez ce qui suit:
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
Pour l'essayer sans vous déconnecter et vous reconnecter, exécutez:
. ~/.bashrc
Ou ouvrez un nouveau Shell. Essayez ensuite d'utiliser la complétion de tabulation avec apt. Ce point et cet espace au début (.
) est identique à l'utilisation du mot clé source
dans bash, mais est plus portable.
Si vous voulez que cela fonctionne lorsque su
'd dans le compte root, faites la même chose dans le répertoire personnel de root (généralement /root
).
Pour l'activer globalement, effectuez les modifications de (1) dans le fichier /etc/bash.bashrc
au lieu.
À tous ceux qui se demandent pourquoi cela fonctionne, le .
devant de /etc/bash_completion
ne fait pas référence au répertoire courant, car il y a des espaces autour de lui. Au lieu de cela, il fait évaluer le contenu du fichier donné dans le shell en cours d'exécution, au lieu d'être exécuté dans un nouveau sous-shell. Il est normalisé ici.
Dans Bash, ce .
peut être remplacé par la commande source
, mais ce n'est pas standardisé par POSIX et est moins portable, donc j'ai tendance à dissuader les gens de l'utiliser. Dans ce cas, comme il s'agit spécifiquement d'un programme d'extension de bash, plutôt que de quelque chose qui doit fonctionner dans un Bourne Shell ou ksh
, vous pouvez vous sentir libre de remplacer source
par la lisibilité.
Dans Debian 9 Stretch, éditez simplement /etc/bash.bashrc et décommentez:
# 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
Copiez ce fichier de configuration depuis Ubuntu:/usr/share/bash-complétion/achèvements/apt dans le même répertoire dans Jessie. Vous pouvez également obtenir le fichier ici: http://Pastebin.com/PRBMt3an
J'ai rencontré des problèmes de saisie semi-automatique lors de la tentative de saisie semi-automatique wget
avec apt-get install wg[TAB][TAB]
et j'ai réussi à le résoudre en supprimant le --no-generate
paramètre des mouches ci-dessous:
/usr/share/bash-completion/completions/apt-cache
/usr/share/bash-completion/completions/apt-get
Il convient de mentionner que ces fichiers ne sont disponibles qu'après l'installation de bash-completion
.
Le --no-generate
le paramètre auquel je fais référence peut être vu dans la ligne ci-dessous, mais j'ai supprimé TOUS --no-generate
, pas seulement à partir de cette ligne: https://github.com/scop/bash-completion/blob/master/completions/apt-get#L28
Je suis arrivé à ce point après avoir exécuté set -v
avant apt-get install wg[TAB][TAB]
, qui montrait que la commande exécutée était:
apt-cache --no-generate pkgnames wg
et la sortie était une erreur:
E: Could not open file - open (2: No such file or directory)
Quand j'ai exécuté apt-cache pkgnames wg
sans le --no-generate
J'ai correctement reçu la liste pour la saisie semi-automatique:
root@484f5c8f56ba:/# apt-cache pkgnames wg
wgalician-minimos
wget2
wgaelic
wget
wgerman-medical
wget2-dev
J'espère que cela t'aides.
Le problème est probablement dû à
Dir::Cache::pkgcache "";
Dir::Cache::srcpkgcache "";
paramètres dans /etc/apt/apt.conf.d
. Dans mon cas, cela provient de l'image Debian Docker, voir https://github.com/debuerreotype/debuerreotype/blob/799473bee3d388cf00bd55221b38a9d58bd6a2ba/scripts/debuerreotype-minimizing-config