Eu tenho isso na linha de comando:
ln -sf $PWD/wine-
e então apertei Tabpara completar o nome do arquivo. Nas versões anteriores do Ubuntu, isso funcionava perfeitamente para completar o wine-
nome do arquivo (e como efeito colateral $PWD
seria expandido naquele momento). Mas agora ele se transforma em
ln -sf \$PWD/wine-
o que não foi o que eu quis dizer e não completa nada, pois o arquivo não começa literalmente com $
.
Como faço para que a conclusão volte ao comportamento menos quebrado?
set
me diz que estas são minhas configurações atuais:
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
Responder1
Eu descobri issoversões bash >= 4.2.29tem uma nova direxpand
configuração de shopt. (Veja man docs/bash.1
se você confere uma nova festa, ou vejabash.1 da linha 8951)
Se alguém usar o Quantal Quetzal 12.10 ou conseguir (ou verificar e construir) um novo bash, então:
shopt -s direxpand
Dá-me o comportamento que quero, preciso e amo.
Solução alternativa: Enquanto isso, Ctrl+ Alt+ Eem vez de Tabfaz o que eu quero também. Mas é estranho.
A propósito, existem vários tópicos chamados "questão de expansão de variável da guia bash?" emgnu.bash.bug. Ao lê-los, encontrei as informações aqui.
Responder2
shopt -u progcomp
Isso corrigiu o problema para mim, também removeu muitas opções de conclusão "inteligentes" que descobri atrapalharem por não completar arquivos que eu sei que estão lá porque a coisa estúpida pensa que não os quero como argumentos para um determinado comando. ARRRGH
Responder3
pesquise _filedir()
no script bash_completion de nível superior e altere a linha
compopt -o filenames 2>/dev/null
para
compopt -o filenames -o noquote 2>/dev/null
Responder4
Para aqueles (como eu) com 12.04 podem usar ~+ em vez de $PWD...
por exemplo :
cd /bin
echo ~+/ls
/bin/ls