Como expandir nomes de arquivos com Tab, mesmo quando uma variável de shell é usada no caminho?

4

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?

    
por yolenoyer 15.07.2017 / 12:19

1 resposta

4

O problema era que a opção direxpand do shell não estava definida. O seguinte resolveu o problema:

shopt -s direxpand
    
por 15.07.2017 / 13:31