No Cygwin, tive o mesmo problema e tive que colocar a variável shell entre aspas. Por exemplo, cd $ccc não se expande, mas cd "$ccc" o faria, e seu cursor ainda está antes da citação à direita.
Eu configurei uma variável em .bashrc :
export SOME_DIR=/path/to/some/dir
Agora, com ls , posso digitar ls $SOME_DIR[tab] , e a variável será expandida, e eu posso usar a guia de preenchimento automático para ir mais fundo no sistema de arquivos.
No entanto, se eu tentar cd $SOME_DIR[tab] ou cd $SOME_DIR/[tab] , nada acontece.
Por que isso funciona somente com ls ? É possível fazer isso funcionar com cd ?
Eu tentei adicionar shopt -s direxpand a .bashrc , sem efeito:
No Cygwin, tive o mesmo problema e tive que colocar a variável shell entre aspas. Por exemplo, cd $ccc não se expande, mas cd "$ccc" o faria, e seu cursor ainda está antes da citação à direita.
Talvez você não tenha diretórios em /path/to/some/dir/ ? Eu apenas tentei cd $SOME_DIR/[tab] no meu sistema e funcionou.
A única maneira de expandir a variável para mim é adicionar uma barra no final dela:
$ cd $SOME_DIR[tab] ## fails
$ cd $SOME_DIR/[tab] ## works
Eu obtenho exatamente o mesmo comportamento com cd ou ls . Você poderia ter adicionado o slash em e enevoá-lo no outro?
Aparentemente, o shopt -s direxpand trabalha com tudo, exceto o cd incorporado. Por isso, adicionei apenas alias xy=cd ao meu perfil e xy funciona exatamente como cd , exceto direxpand , que usa o TAB. (Quem teria pensado que seria tão simples?)
Eu recebo quase o mesmo problema com o (antigo) bash 4.2.37, não com o bash 4.3 ou 4.4.
Ou seja: a expansão funciona com ls , mas não com cd .
No entanto, como um atalho de teclado auxiliar, eu defini (de e S pand):
Ctrl-s in my
~/.inputrc:
Control-s: shell-expand-line
Isso me permite digitar: cd $SOME_DIR e depois Ctrl - s para obter a variável expandida para:
cd /path/to/some/dir
Uma associação de teclas que é igualmente útil é (de G lobbing):
Ctrl-g also in my
~/.inputrc:
Control-g: glob-expand-word
Isso me permite digitar ls b* e depois Ctrl - g para obter o b* expandido:
$ ls b*<kbd>Ctrl</kbd>-<kbd>s</kbd>
$ ls bash.html_node.tar.gz bash.pdf
Que também me permite editar a linha de comando e adicionar ou remover elementos, conforme necessário.
Tags bash autocomplete