¿Cómo hacer que bash deje de escapar de $ durante la finalización de la pestaña?

¿Cómo hacer que bash deje de escapar de $ durante la finalización de la pestaña?

Tengo esto en la línea de comando:

ln -sf $PWD/wine-

y luego presiono Tabpara completar el nombre del archivo. En versiones anteriores de Ubuntu, esto funcionaba bien para completar el wine-nombre del archivo (y como efecto secundario $PWDse ampliaría en ese momento). Pero ahora lo convierte en

ln -sf \$PWD/wine-

que no es lo que quise decir en absoluto y no completa nada ya que el archivo no comienza literalmente con $.

¿Cómo puedo volver a completar el comportamiento menos roto?

setme dice que estas son mis configuraciones actuales:

BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor

Respuesta1

he encontrado queversiones de bash >= 4.2.29tener una nueva direxpandconfiguración de tienda. (Mira man docs/bash.1si revisas una nueva fiesta o vesbash.1 de la línea 8951)

Si uno usa Quantal Quetzal 12.10 o consigue (o verifica y construye) un nuevo bash, entonces:

shopt -s direxpand

Me da el comportamiento que quiero, necesito y amo.

Solución alternativa: mientras tanto, Ctrl+ Alt+ Een lugar de Tabhacer lo que quiero también. Pero es incómodo.

Por cierto, hay varios hilos llamados "¿pregunta sobre expansión de variable de pestaña bash?" engnu.bash.bug. Al leerlos, encontré la información aquí.

Respuesta2

shopt -u progcomp

Esto me solucionó el problema, también eliminó muchas opciones de finalización "inteligentes" que encontré que interfieren al no completar archivos que sé que están ahí porque el estúpido piensa que no los quiero como argumentos para un tema en particular. dominio. ARRRGH

Respuesta3

busque _filedir()en el script bash_completion de nivel superior y cambie la línea

compopt -o filenames 2>/dev/null

a

compopt -o filenames -o noquote 2>/dev/null

Respuesta4

Para aquellos (como yo) con 12.04 pueden usar ~+ en lugar de $PWD...

Por ejemplo :

cd /bin
echo ~+/ls
/bin/ls

información relacionada