O problema era que a opção direxpand
do shell não estava definida. O seguinte resolveu o problema:
shopt -s direxpand
No meu .bash_profile
, defino variáveis curtas para facilitar o acesso a alguns diretórios comuns. Por exemplo:
lh=/var/log/httpd
hc=/etc/httpd/conf
Então eu uso assim, por exemplo:
$ cd $lh
$ less $lh/access_log
Mas quando quero usar a tecla Tab para classificar nomes de autocompletar (em tal parâmetro que contém uma referência de variável), o bash executa o autocompleto, mas
também insere uma barra invertida \
antes do cifrão do nome da variável.
Por exemplo, digitando less $lh/acc
em seguida, pressionar Tab vai se expandir para: less \$lh/access_log
.
Claro, o que eu gostaria, em vez disso, é less $lh/access_log
ou até less /var/log/httpd/access_log
.
(estranhamente, com o comando cd
, o autocomplete não funciona nesse caso, isso pergunta já fala sobre isso)
Eu sei que há uma alternativa usando shell-expand-line
(chave padrão: Ctrl + Alt + E ), mas está longe de
perfeito porque também expande aliases e não cita caminhos com caracteres especiais (espaços, ...).
Existe uma maneira no bash de expandir nomes de arquivos com o Tab, mesmo quando uma variável do shell é usada no caminho?
Tags bash autocomplete