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