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
- Comment éliminer les inconvénients lors du démarrage d'une interface graphique à partir d'un terminal?
- Comment fonctionne l'achèvement du path Bash avec sudo?
- Achèvement du premier argument de cd OLD NEW
- Trucs étranges dans le terminal quand j'ai frappé Tab
- Comment personnaliser la fin de la command Bash?
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