Pourquoi ne puis-je pas utiliser l'extension tab / auto-complétion des variables shell avec cd?

J'ai installé une variable dans .bashrc :

 export SOME_DIR=/path/to/some/dir 

Maintenant, avec ls je peux taper ls $SOME_DIR[tab] et la variable sera étendue, et je peux ensuite utiliser l'onglet pour l'auto-complétion quand je vais plus loin dans le système de files. Cependant, si j'essaye cd $SOME_DIR[tab] ou cd $SOME_DIR/[tab] , rien ne se passe.

Pourquoi cela ne fonctionne-t-il qu'avec ls ? Est-il possible de le faire fonctionner avec cd ?
J'ai essayé d'append shopt -s direxpand à .bashrc , sans effet:

Dans Cygwin, j'ai eu le même problème et j'ai dû inclure la variable shell entre guillemets. Donc, par exemple, cd $ccc ne serait pas développé mais cd "$ccc" serait, et votre slider est toujours avant la citation de droite.

Peut-être que vous n'avez pas de directorys dans /path/to/some/dir/ ? Je viens d'essayer cd $SOME_DIR/[tab] sur mon système et cela a fonctionné.

La seule façon d'étendre la variable pour moi est d'append une barre oblique à la fin de celui-ci:

 $ cd $SOME_DIR[tab] ## fails $ cd $SOME_DIR/[tab] ## works 

J'ai exactement le même comportement avec cd ou ls . Pourriez-vous avoir ajouté la barre oblique et fogoten dans l'autre?

Apparemment shopt -s direxpand fonctionne avec tout sauf le cd embedded. Donc, je viens d'append alias xy=cd à mon profil, et xy fonctionne comme cd sauf direxpand fonctionne en utilisant TAB. (Qui aurait pensé que ce serait si simple?)

J'ai presque le même problème avec (old) bash 4.2.37, pas avec bash 4.3 ou 4.4.
C'est-à-dire: l'extension fonctionne avec ls mais pas avec cd .


Cependant, comme aide-keyboard, j'ai défini (d'après S Pand):

Ctrls dans mon ~/.inputrc :

 Control-s: shell-expand-line 

Cela me permet de taper: cd $SOME_DIR puis Ctrl cd $SOME_DIR pour get la variable étendue à:

 cd /path/to/some/dir 

Une binding qui est tout aussi utile est (de G lobbing):

Ctrlg aussi dans mon ~/.inputrc :

 Control-g: glob-expand-word 

Cela me permet de taper ls b* puis Ctrlg pour get le b* étendu:

 $ ls b*<kbd>Ctrl</kbd>-<kbd>s</kbd> $ ls bash.html_node.tar.gz bash.pdf 

Ce qui me permet également de modifier la command line et d'append ou supprimer des éléments si nécessaire.