$ bash --version
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
Normalerweise verwende ich die obige Bash-Version auf einem Ubuntu 16.04-Rechner über das MATE-Terminal. Derzeit verwende ich jedoch Terminal.app von macOS 10.14.6, um mich per SSH mit diesem Rechner zu verbinden. Das ist .bash_profile
für meinen Benutzer nur source
s .bashrc
, also sollte es außer den Terminalemulatoren keine Konfigurationsunterschiede geben.
Ich habe Umgebungsvariablen, die ich zum Abkürzen häufig verwendeter, aber langer Verzeichnispfade verwende. Diese sind in meiner .bashrc-Datei definiert, etwa so:
export FOO=~/foo/bar/baz
export BAR=~/foo/bar/baz/qux/foobar
Ich habe die Angewohnheit, bei Unterverzeichnissen dieser Variablen die Tab-Vervollständigung zu verwenden (also einen Teil des Namens einzutippen und dann die Tabulatortaste zu drücken), sodass ich Folgendes eingeben kann:
cd $FOO/mi<TAB>
und bekomme:
cd $FOO/misc/
Dies ist das Verhalten unter dem MATE-Terminal, an das ich gewöhnt bin und das mir gefällt. Wenn ich jedoch Terminal.app verwende, um mich per SSH mit derselben Maschine zu verbinden, wird die Variable irritierenderweise erweitert:
cd /home/andrea/foo/bar/baz/misc/
Ich weiß nicht, warum das passiert, aber ich vermute, dass Terminal.app eine andere Escape-Sequenz sendet. Wenn ich <ESC><TAB>
Terminal.app anstelle von eingebe <TAB>
, erhalte ich das bekannte und gewünschte Verhalten (keine Erweiterung der Umgebungsvariable). Leider scheint es nicht die Escape-Sequenz von Terminal.app zu seinfür TABist konfigurierbar.
Ich möchte also wissen, ob ich Bash zwingen kann, immer das gewünschte Verhalten zu verwenden.
In den Antworten aufbash: Variablenname wird mit Tab-Vervollständigung nicht erweitert(wo jemand dieGegenteilProblem für mich, sie wollen das Verhalten haben, das ichnichtwill), habe ich gesehen shopt -s direxpand
. Also habe ich das Gegenteil versucht, shopt -u direxpand
und es hat nicht geholfen. Inhttps://stackoverflow.com/questions/6418493/bash-variable-expansion-on-tab-completeHabe ich auch gesehen shopt -s cdable_vars
, hat aber auch shopt -u cdable_vars
nicht geholfen.
Ich bin ratlos. :(