Ich habe dies in der Befehlszeile:
ln -sf $PWD/wine-
und dann drücke ich, Tabum den Dateinamen zu vervollständigen. In früheren Versionen von Ubuntu funktionierte dies problemlos, um den wine-
Dateinamen zu vervollständigen (und als Nebeneffekt $PWD
wurde er zu diesem Zeitpunkt erweitert). Aber jetzt wird es zu
ln -sf \$PWD/wine-
das ist überhaupt nicht das, was ich meinte, und vervollständigt nichts, da die Datei nicht wörtlich mit beginnt $
.
Wie führe ich die Vervollständigung wieder zum weniger fehlerhaften Verhalten zurück?
set
sagt mir, dass dies meine aktuellen Einstellungen sind:
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
Antwort1
Ich habe festgestellt, dassBash-Versionen >= 4.2.29habe eine neue direxpand
Shopt-Einstellung. (Schauen Sie nach, man docs/bash.1
ob Sie eine neue Bash ausprobieren, oder sehen Siebash.1 ab Zeile 8951)
Wenn Sie Quantal Quetzal 12.10 verwenden oder auf andere Weise eine neue Bash erhalten (oder auschecken und erstellen), gilt Folgendes:
shopt -s direxpand
Verleiht mir das Verhalten, das ich will, brauche und liebe.
Problemumgehung: In der Zwischenzeit macht Ctrl+ Alt+ Estatt Tabauch, was ich will. Ist aber umständlich.
Übrigens, es gibt mehrere Threads mit dem Titel "Bash Tab Variable Expansion Frage?" ingnu.bash.fehler. Beim Lesen habe ich die Informationen hier gefunden.
Antwort2
shopt -u progcomp
Dadurch wurde das Problem für mich behoben und auch viele „intelligente“ Vervollständigungsoptionen entfernt, die meiner Erfahrung nach störend sind, da sie Dateien nicht vervollständigen, von denen ich weiß, dass sie da sind, weil das blöde Ding denkt, ich möchte sie nicht als Argumente für einen bestimmten Befehl. ARRRGH
Antwort3
Suchen Sie _filedir()
im obersten bash_completion-Skript und ändern Sie die Zeile
compopt -o filenames 2>/dev/null
Zu
compopt -o filenames -o noquote 2>/dev/null
Antwort4
Diejenigen (wie ich) mit 12.04 können ~+ statt $PWD verwenden …
Zum Beispiel :
cd /bin
echo ~+/ls
/bin/ls