Bash e Tab Completar automaticamente

3

Eu recentemente coloquei o Fedora Core 15 no meu sistema, e tive uma mudança de comportamento que não consigo entender. Usando Tab-Complete no shell BASH funciona bem, exceto quando eu uso a variável $ HOME.

Se eu digitar cd $HOME/d TAB , ele será preenchido automaticamente no diretório apropriado (doc), mas também será inserido o \ precedente, portanto, o resultado será cd \$HOME/doc . Isso falha, pois esse caminho não existe.

O erro é

bash: cd: $HOME/doc: No such file or directory

Se eu não usar o Tab-Complete, funciona, pois $ HOME ainda aponta para o diretório correto. De onde veio esse \ extra e como faço para que ele desapareça?

    
por Wesley Burr 09.06.2011 / 06:42

2 respostas

4

Ao emitir o comando complete , você obterá a lista de todas as definições de conclusão. Então você pode procurar a definição ofensiva em algum lugar em /etc/bash_completion e /etc/bash_completion.d . Pode haver também alguns .bash_completion em seu diretório inicial. No meu sistema, a variável $HOME foi concluída corretamente, mas não consegue concluir nada.

Você tentou usar ~ em vez de $HOME ? É mais fácil digitar e funciona como esperado ...

    
por 09.06.2011 / 10:02
1

Existe uma opção para isso

shopt -s direxpand

Não funcionou no Bash 4.1 (este recurso incompatível foi adicionado no BASH 4.2), então eu usei como

[[ $BASH_VERSION =~ ^4.[2-9] ]] && shopt -s direxpand
    
por 24.04.2014 / 13:27