Como fazer com que o bash pare de escapar de $ durante a conclusão da guia?

Como fazer com que o bash pare de escapar de $ durante a conclusão da guia?

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 $PWDseria 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?

setme 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 direxpandconfiguração de shopt. (Veja man docs/bash.1se 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

informação relacionada