Bash et Tab Auto-complète

J'ai récemment mis Fedora Core 15 sur mon système, et j'ai eu un changement de comportement que je ne peux pas comprendre. Utiliser Tab-Complete dans le shell BASH fonctionne bien, sauf lorsque j'utilise la variable $ HOME.

Si je tape cd $HOME/d TAB , il va se terminer automatiquement dans le directory approprié (doc), mais il insère aussi un \ précédent, donc le résultat est cd \$HOME/doc . Cela échoue alors, car un tel path n'existe pas.

L'erreur est

bash: cd: $ HOME / doc: Aucun file ou directory de ce type

Si je n'utilise pas Tab-Complete, cela fonctionne, car $ HOME indique toujours le bon directory. D'où vient cet extra, et comment puis-je le faire disparaître?

En émettant la command complete vous obtiendrez la list de toutes les définitions d'achèvement. Ensuite, vous pouvez searchr la définition incriminée quelque part dans /etc/bash_completion et /etc/bash_completion.d . Il peut y avoir aussi du .bash_completion dans votre directory personnel. Sur mon système, la variable $HOME est terminée correctement, mais ne parvient pas à terminer quoi que ce soit.

Avez-vous essayé d'utiliser ~ au lieu de $HOME ? C'est plus facile à taper et ça marche comme prévu …

Il y a une option pour cela

 shopt -s direxpand 

Cela n'a pas fonctionné sur Bash 4.1 (cette fonctionnalité incompatible a été ajoutée dans BASH 4.2), donc je l'ai utilisé comme

 [[ $BASH_VERSION =~ ^4.[2-9] ]] && shopt -s direxpand