Bash ne se complétera pas automatiquement (Tab) avec les fichiers

L’achèvement automatique en bash (avec Tab) fonctionne sur les dossiers, mais pas sur les fichiers.

  • Je cours Ubuntu 13.10
  • Je n’ai pas touché à mon fichier .bashrc

Voici à quoi ressemble la partie inférieure du fichier .bashrc , avec la partie bash-completion installée et mise à jour:

# 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 ! 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 

Des idées?

Le package tiers “bash_completion” (à ne pas confondre avec bash ou son achèvement natif) peut parfois être difficile à prévoir.

  1. Certaines commandes sont spécifiquement configurées pour ne jamais terminer des fichiers, comme cd
  2. Certaines commandes refuseront de compléter certains noms de fichiers, car bash_completion ne réalise pas que le programme les gère, comme mplayer .
  3. Certaines commandes ne sont que boguées, surtout lorsque les chemins contiennent des espaces et d’autres caractères, comme pour scp .

Si vous vous trouvez dans une situation où bash_completion n’est pas utile, vous pouvez utiliser M-/ (aka Alt + / ) pour utiliser la fin du nom de fichier natif de bash.

Si une commande vous pose souvent problème, vous pouvez désactiver bash_completion pour cette commande en utilisant complete -r thatcommand à la fin de votre .bashrc .

Le fichier .bashrc semble correct donc le problème réside probablement dans l’un des fichiers bash_completion.

Je vous suggère de sauvegarder les fichiers et d’essayer de les remplacer par ceux-ci:

pour / etc / bash_completion:

http://pastebin.com/0HWHsbyR

pour / usr / share / bash-completion / bash_completion:

http://pastebin.com/c49KrbXT

ce sont les fichiers d’achèvement standard pour Ubuntu 13.10. Redémarrez la console avant de vérifier si cela a fonctionné.

Une des causes possibles est un fichier nommé ! . Certaines configurations par défaut bash-completion ont un bogue lorsqu’un tel fichier existe. Vous pouvez supprimer le fichier ou le patch /usr/share/bash-completion/bash_completion comme indiqué dans le lien du bogue.