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