comment faire pour que bash arrête d'échapper à $ lors de l'achèvement de tabulation?

30

J'ai ceci sur la ligne de commande:

 ln -sf $PWD/wine-

et puis je frappe tab pour compléter le nom de fichier. Dans les versions antérieures d'Ubuntu, cela fonctionnait très bien pour compléter le fichier wine- filename (et en tant qu'effet secondaire, $ PWD serait étendu à ce moment-là). Mais maintenant, il le transforme en

 ln -sf $PWD/wine-

ce qui n'est pas du tout ce que je voulais dire et ne complète rien car le fichier ne commence pas littéralement par $ .

Comment est-ce que je peux reprendre le comportement le moins cassé?

set me dit que ce sont mes paramètres actuels:

BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
    
posée keturn 22.10.2011 - 20:06
la source

5 réponses

24

J'ai découvert que versions de bash & gt; = 4.2.29 avoir un nouveau paramètre direxpand shopt. (Voir man docs/bash.1 si vous extrayez une nouvelle bash, ou voyez bash.1 de la ligne 8951 )

Si l’on utilise Quantal Quetzal 12.10 ou s’empare de (ou vérifie et construit) une nouvelle bash, alors:

shopt -s direxpand

Me donne le comportement que je veux, besoin et amour.

Solution: en attendant, CTRL-ALT-e au lieu de l'onglet fait ce que je veux aussi. Mais c'est gênant.

BTW, Il existe plusieurs threads appelés bash tab variable expansion question? dans gnu.bash.bug . En les lisant, j'ai trouvé l'info ici.

    
réponse donnée Peter V. Mørch 14.05.2012 - 06:23
la source
2

recherchez _filedir() dans le script bash_completion de niveau supérieur et modifiez la ligne

compopt -o filenames 2>/dev/null

à

compopt -o filenames -o noquote 2>/dev/null
    
réponse donnée mba 19.03.2015 - 22:11
la source
1

Pour ceux (comme moi) avec 12.04 peut utiliser ~ + au lieu de $ PWD ...

par exemple:

cd /bin
echo ~+/ls
/bin/ls
    
réponse donnée Tony 01.12.2012 - 04:39
la source
1

Même avec la mise à jour bash, je trouvais que $ était toujours échappé.

  • Suppression du package bash-completion (1:2.1-3.fc20)
  • ou simplement ne pas rechercher /etc/bashrc de ~/.bashrc semblait résoudre le problème.

Je soupçonne que je vais maintenant manquer certaines fonctionnalités que je suis normalement habitué, mais n'en ont pas encore remarqué.

Alternative (au moins pour Fedora 26), ajoutez export BASH_COMPLETION_VERSINFO=0 avant de rechercher /etc/bashrc . Cela rend le script problématique pense qu’il a déjà été trouvé.

    
réponse donnée jozxyqk 09.10.2014 - 11:25
la source
0

J'ai rencontré le même problème avec Bash dans Cygwin. J'ai corrigé mon problème en définissant l'option suivante.

shopt -s cdable_vars

lien

    
réponse donnée mig 12.04.2016 - 19:32
la source

Lire d'autres questions sur les étiquettes