Befehlszeile · 5 min read · Jan 20, 2026
Linux-Befehlszeilen-Navigationstipps/-tricks 3 - die CDPATH-Umgebungsvariable
Im ersten Teil dieser Serie haben wir den cd - Befehl im Detail besprochen, und im zweiten Teil haben wir einen tiefen Einblick in die pushd und popd Befehle sowie die Szenarien gegeben, in denen sie nützlich sind.
Fortfahrend mit unserer Diskussion über die Aspekte der Befehlszeilennavigation werden wir in diesem Tutorial die CDPATH-Umgebungsvariable anhand leicht verständlicher Beispiele besprechen. Wir werden auch einige fortgeschrittene Details zu dieser Variablen behandeln.
** Die CDPATH-Umgebungsvariable
* Selbst wenn Ihre Arbeit in der Befehlszeile alle Operationen unter einem bestimmten Verzeichnis - sagen wir Ihrem Home-Verzeichnis - umfasst, müssen Sie dennoch absolute Pfade angeben, während Sie die Verzeichnisse wechseln. Angenommen, ich befinde mich im Verzeichnis /home/himanshu/Downloads*:
$ pwd
/home/himanshu/DownloadsUnd die Anforderung ist, zum Verzeichnis /home/himanshu/Desktop zu wechseln. Um dies zu tun, muss ich normalerweise entweder ausführen:
cd /home/himanshu/Desktop/oder
cd ~/Desktop/oder
cd ../Desktop/Wäre es nicht einfach, wenn ich einfach den folgenden Befehl ausführen könnte:
cd DesktopJa, das ist möglich. Und hier kommt die CDPATH-Umgebungsvariable ins Spiel. Sie können diese Variable verwenden, um das Basisverzeichnis für den cd-Befehl zu definieren.
Wenn Sie versuchen, ihren Wert auszugeben, werden Sie sehen, dass diese Umgebungsvariable standardmäßig leer ist:
$ echo $CDPATH
$Nun, unter Berücksichtigung des Falls, den wir bisher besprochen haben, lassen Sie uns diese Umgebungsvariable verwenden, um /home/himanshu als Basisverzeichnis für den cd-Befehl zu definieren.
Der einfachste Weg, dies zu tun, ist:
export CDPATH=/home/himanshuUnd jetzt kann ich das tun, was ich vorher nicht tun konnte - aus dem Verzeichnis /home/himanshu/Downloads den Befehl cd Desktop erfolgreich ausführen.
$ pwd /home/himanshu/Downloads $cd Desktop/ /home/himanshu/Desktop $
Das bedeutet, dass ich jetzt in jedes Verzeichnis unter /home/himanshu wechseln kann, ohne explizit /home/himanshu oder ~ oder ../ (oder mehrere ../) im cd-Befehl anzugeben.
Punkte, die zu beachten sind
* Sie wissen jetzt, wie wir die CDPATH-Umgebungsvariable verwendet haben, um einfach zwischen /home/himanshu/Downloads und /home/himanshu/Desktop zu wechseln. Nun, stellen Sie sich eine Situation vor, in der das Verzeichnis /home/himanshu/Desktop ein Unterverzeichnis namens Downloads* enthält, und genau dorthin möchten Sie wechseln.
Aber plötzlich stellen Sie fest, dass ein cd Desktop Sie zu /home/himanshu/Desktop bringt. Um sicherzustellen, dass das nicht passiert, machen Sie:
cd ./DownloadsWährend es kein Problem mit dem oben genannten Befehl an sich gibt, ist das ein zusätzlicher Aufwand Ihrerseits (wie gering auch immer), insbesondere wenn man bedenkt, dass Sie dies jedes Mal tun müssen, wenn eine solche Situation auftritt. Eine elegantere Lösung für dieses Problem könnte sein, die CDPATH-Variable ursprünglich folgendermaßen festzulegen:
export CDPATH=".:/home/himanshu"Das bedeutet, dass Sie dem cd-Befehl sagen, zuerst im aktuellen Arbeitsverzeichnis nach dem Verzeichnis zu suchen und dann im Verzeichnis /home/himanshu zu suchen. Natürlich hängt es ganz von Ihrer Präferenz oder Anforderung ab, ob Sie möchten, dass der cd-Befehl sich so verhält - meine Idee hinter der Diskussion dieses Punktes war, Ihnen mitzuteilen, dass eine solche Situation auftreten kann.
Wie Sie jetzt verstanden haben sollten, sobald die CDPATH-Umgebungsvariable gesetzt ist, sind ihr Wert - oder die Menge der Pfade, die sie enthält - die einzigen Orte im System, an denen der cd-Befehl nach Verzeichnissen sucht (außer natürlich in den Szenarien, in denen Sie absolute Pfade verwenden). Daher liegt es ganz bei Ihnen, sicherzustellen, dass das Verhalten des Befehls konsistent bleibt.
Wenn es ein Bash-Skript gibt, das den cd-Befehl mit relativen Pfaden verwendet, ist es besser, die CDPATH-Umgebungsvariable zuerst zu löschen oder zurückzusetzen, es sei denn, Sie sind damit einverstanden, in unvorhergesehene Probleme verwickelt zu werden. Alternativ können Sie anstelle des export-Befehls im Terminal, um CDPATH festzulegen, die Umgebungsvariable in Ihrer .bashrc-Datei festlegen, nachdem Sie für interaktive/nicht-interaktive Shells getestet haben, um sicherzustellen, dass die Änderung, die Sie vornehmen möchten, nur in interaktiven Shells reflektiert wird.
Die Reihenfolge, in der die Pfade im Wert der Umgebungsvariable erscheinen, ist ebenfalls wichtig. Wenn beispielsweise das aktuelle Verzeichnis vor /home/himanshu aufgeführt ist, sucht der cd-Befehl zuerst nach einem Verzeichnis im aktuellen Arbeitsverzeichnis und wechselt dann zu /home/himanshu. Wenn der Wert jedoch “/home/himanshu:.” ist, wird die erste Suche in /home/himanshu durchgeführt und danach im aktuellen Verzeichnis. Es versteht sich von selbst, dass dies Auswirkungen darauf hat, was der cd-Befehl tut, und Probleme verursachen kann, wenn Sie sich der Reihenfolge der Pfade nicht bewusst sind.
Denken Sie immer daran, dass die CDPATH-Umgebungsvariable, wie der Name schon sagt, nur für den cd-Befehl funktioniert. Das bedeutet, dass Sie, während Sie sich im Verzeichnis /home/himanshu/Downloads befinden, den Befehl cd Desktop ausführen können, um zum Verzeichnis /home/himanshu/Desktop zu wechseln, aber Sie können kein ls ausführen. Hier ist ein Beispiel:
$ pwd
/home/himanshu/Downloads
$ ls Desktop
ls: kann auf Desktop nicht zugreifen: Datei oder Verzeichnis nicht gefunden
$Es könnte jedoch einige einfache Umgehungen geben. Zum Beispiel können wir das, was wir wollen, mit minimalem Aufwand auf folgende Weise erreichen:
$ cd Desktop/;ls
/home/himanshu/Desktop
backup backup~ Downloads gdb.html outline~ outline.txt outline.txt~Aber ja, es könnte nicht für jede Situation eine Umgehung geben.
Ein weiterer wichtiger Punkt: Wie Sie vielleicht bemerkt haben, produziert der Befehl, wann immer Sie den cd-Befehl mit der gesetzten CDPATH-Umgebungsvariable verwenden, den vollständigen Pfad des Verzeichnisses, zu dem Sie wechseln, in der Ausgabe. Es versteht sich von selbst, dass nicht jeder diese Informationen jedes Mal haben möchte, wenn er den cd-Befehl auf seinem Computer ausführt.
Um sicherzustellen, dass diese Ausgabe unterdrückt wird, können Sie den folgenden Befehl verwenden:
alias cd='>/dev/null cd'Der oben genannte Befehl wird die Ausgabe stummschalten, wann immer der cd-Befehl erfolgreich ist, aber die Fehlermeldungen zulassen, die erzeugt werden, wenn der Befehl fehlschlägt.
Schließlich, falls Sie auf ein Problem stoßen, bei dem Sie nach dem Setzen der CDPATH-Umgebungsvariable die Tab-Vervollständigungsfunktion der Shell nicht verwenden können, können Sie versuchen, bash-completion zu installieren und zu aktivieren - mehr dazu hier.
Fazit
Die CDPATH-Umgebungsvariable ist ein zweischneidiges Schwert - wenn sie nicht mit Vorsicht und vollständigem Wissen verwendet wird, kann sie Sie in komplexe Fallen führen, die viel Ihrer kostbaren Zeit in Anspruch nehmen können, um gelöst zu werden. Natürlich bedeutet das nicht, dass Sie es niemals ausprobieren sollten; bewerten Sie einfach alle verfügbaren Optionen und wenn Sie zu dem Schluss kommen, dass die Verwendung von CDPATH von großem Nutzen wäre, dann gehen Sie voran und verwenden Sie es.
Haben Sie CDPATH wie ein Profi verwendet? Haben Sie noch weitere Tipps zu teilen? Bitte teilen Sie Ihre Gedanken in den Kommentaren unten mit.
**
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.