Es ist eine Shell-Option cdable_vars
:
cdable_vars
Wenn dies festgelegt ist, ein Argument für den cd
builtin Befehl, der kein Verzeichnis angenommen wird, der Name eines Variable, dessen Wert sein, ist das Verzeichnis, in das geändert werden soll.
Sie können fügen Sie diese zu Ihrer .bashrc
:
shopt -s cdable_vars
export myFold=$HOME/Files/Scripts/Main
Beachten Sie, dass ich die Tilde mit $HOME
ersetzt haben; Zitate verhindern Tilde Expansion und Bash würde sich beschweren, dass es kein Verzeichnis ~/Files/Scripts/Main
gibt.
Jetzt können Sie diese wie folgt verwenden:
cd myFold
Kein $
erforderlich. Das ist der springende Punkt, eigentlich – wie in anderen Antworten gezeigt, cd "$myFold"
funktioniert ohne die Shell-Option. cd myFold
funktioniert auch, wenn der Pfad in myFold
Leerzeichen enthält, keine Angabe erforderlich.
Dies funktioniert in der Regel auch mit Tab Auto-Vervollständigung als _cd
Funktion in bash_completion
prüft, ob cdable_vars
– gesetzt ist, aber nicht jede Implementierung macht es auf die gleiche Art und Weise, so dass Sie bash_completion
wieder in Ihrem .bashrc
beziehen könnten (oder bearbeiten /etc/profile
zu Setze die Shell-Option).
Danke. Das funktioniert. Ich habe nur alias myfold = '~/some/path' und cd myfold versucht. Ich bekomme einen Fehler - kein solches Verzeichnis. Warum ? Ist es auch möglich, eine Alias-Variable zu "entfernen"? – bashboy
myfold = '~/einige/pfad' cd "$ myfold" schlägt fehl. Warum ? – bashboy
@Bashboy, wahrscheinlich, weil Sie kein Verzeichnis mit diesem Namen haben. ~/irgendein/Pfad war ein Beispiel, Sie sollten den _actual_ Pfad ersetzen, den Sie verwenden möchten. Ich werde es ändern, um Ihr Beispielverzeichnis zu verwenden, damit es klarer ist. Um die Zuweisung eines Alias aufzuheben, verwenden Sie den Befehl unalias. Ich habe auch die Antwort mit einem Transkript aktualisiert, einschließlich der Verwendung dieses Befehls. – paxdiablo