Die Funktion zur automatischen Vervollständigung von Bash scheint mit Umgebungsvariablen in 11.04 nicht zu funktionieren. Das aktuelle Verhalten ist unten angegeben
export SCRIPT=/home/user/script
cd $SCRIPT/<tab>
führt dazu, dass ein Backslash ( \
) hinzugefügt wird, bevor $SCRIPT
die Eingabeaufforderung angezeigt wird
cd \$SCRIPT/
Dasselbe passiert, wenn cd
durch ls
oder einen anderen Befehl ersetzt wird
Auch wenn es eine ausführbare Datei im Pfad von $ SCRIPT gibt und ich das ausführen möchte
$SCRIPT/<tab>
Bash zeigt die Optionen im Ordner nicht an (unabhängig davon, ob sich eine einzelne Datei oder mehrere Dateien / Verzeichnisse im Pfad der Umgebungsvariablen befinden).
Mit anderen Worten, die automatische Vervollständigung funktioniert nicht mit Umgebungsvariablen.
11.04
bash
environment-variables
Nilchat
quelle
quelle
Antworten:
Dieser Bug wurde in Bash 4.2 eingeführt. Es gibt hier einen langen Thread darüber:
http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html
Kurz gesagt, Chet Ramey, der Entwickler von bash, ist sich noch nicht sicher, wie er das Problem beheben soll.
quelle
Verwenden Sie den Befehl, um das alte Verhalten wiederherzustellen
oder binde es in dein ein
.bashrc
Wenn Sie dieselbe .bashrc-Datei mit verschiedenen Versionen von bash verwenden, verwenden Sie
quelle
Die in http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html vorgeschlagene Problemumgehung lautet:
<Tab>
diese Option, um Ihre Umgebungsvariable in der Befehlszeile automatisch zu vervollständigencd $MYVAR
<Esc>
+<Ctrl>-E
, um die aktuelle Befehlszeile zu erweitern, dh ersetzen Sie$MYVAR
den Pfad durch seinen Wert/
und dann<Tab>
wie gewohnt die automatische Vervollständigung genießenDies setzt voraus, dass Sie sich im Emacs-Modus befinden (
set -o emacs
) und diesbash_completion
sinnvoll eingerichtet habencd
(zcomplete -o nospace -F _cd cd
. B. ).Leider funktioniert dies nicht im vi-Modus (
set -o vi
), da die Befehlszeilenerweiterung dann nicht verfügbar ist.quelle
Nachdem Sie die Shell-Variable eingegeben haben
Typ Cntrl-Alt-E. Dies erweitert die Variable
Dies funktioniert mit EDITOR = vi in Fedora 16.
quelle