O recurso de preenchimento automático do bash parece não funcionar com variáveis de ambiente no 11.04. O comportamento atual é indicado abaixo
export SCRIPT=/home/user/script
cd $SCRIPT/<tab>
resulta em uma barra invertida ( \
) sendo adicionada antes, $SCRIPT
ou seja, o prompt se torna
cd \$SCRIPT/
A mesma coisa acontece se cd
for substituído por ls
ou qualquer outro comando
Além disso, se houver um arquivo executável no caminho contido em $ SCRIPT e eu quero executá-lo
$SCRIPT/<tab>
O Bash não mostra as opções dentro da pasta (independentemente de haver um único arquivo ou vários arquivos / diretórios no caminho contido nas variáveis de ambiente).
Em outras palavras, o preenchimento automático não funciona com variáveis de ambiente.
11.04
bash
environment-variables
nilchat
fonte
fonte
Respostas:
Este bug foi introduzido no bash 4.2. Há uma longa discussão sobre isso aqui:
http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html
Em resumo, Chet Ramey, desenvolvedor do bash, ainda não sabe ao certo como proceder para corrigi-lo.
fonte
Para recuperar o comportamento antigo, use o comando
ou inclua-o no seu
.bashrc
Se você usar o mesmo .bashrc com versões diferentes do bash, use
fonte
A solução alternativa sugerida em http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html é:
<Tab>
para auto-completar sua variável de ambiente st você linha de comando dizcd $MYVAR
<Esc>
+<Ctrl>-E
para expandir a linha de comando atual, ou seja, substitua$MYVAR
pelo seu valor, o caminho/
e aproveite o<Tab>
preenchimento automático, como de costumeIsso pressupõe que você esteja no modo emacs (
set -o emacs
) e tenhabash_completion
configurado de forma sensata paracd
(por exemplocomplete -o nospace -F _cd cd
).Infelizmente, isso não funciona no modo vi (
set -o vi
) porque a expansão da linha de comando não está disponível.fonte
Depois de digitar a variável shell
digite Cntrl-Alt-E. Isso expande a variável
Isso funciona com EDITOR = vi no Fedora 16.
fonte