Linux / Befehl pwd: Das aktuelle Arbeitsverzeichnis drucken

pwd ist ein Befehl, der den Pfad des aktuellen Arbeitsverzeichnisses (Current Working Directory) ausgibt. Er wird verwendet, um zu prüfen, in welchem Verzeichnis man sich im Terminal befindet oder um den Referenzort für relative Pfade in Shell-Skripten zu überprüfen.

In der Regel ist es ausreichend, ihn ohne Optionen auszuführen, aber wenn der Pfad symbolische Links enthält, ist es wichtig, den Unterschied zwischen -L, der den logischen Pfad anzeigt, und -P, der den tatsächlichen Dateisystempfad anzeigt, zu verstehen.

Ergänzende Befehle und Anwendungsfälle finden Sie in Linux / Befehle / cd - Verzeichnis wechseln und Liste der häufig verwendeten Befehle in Linux.

Was ist der Befehl pwd?

pwd steht für print working directory. Er gibt den absoluten Pfad des Verzeichnisses aus, das die aktuelle Shell oder der aktuelle Prozess als Arbeitsreferenz verwendet.

pwd

Zum Beispiel, wenn sich Ihr aktueller Standort im Projektverzeichnis des Benutzers befindet, könnte die Ausgabe wie folgt aussehen.

/home/user/projects/web-app

Das aktuelle Arbeitsverzeichnis ist die Referenz für die Interpretation relativer Pfade. Derselbe relative Pfad, config/settings.ini, verweist auf unterschiedliche Dateien, abhängig davon, aus welchem Verzeichnis der Befehl ausgeführt wird.

Grundlegende Syntax und Verwendung

pwd [options]

Da es kein Befehl ist, der andere Pfade als Argumente annimmt, wird er normalerweise allein wie folgt ausgeführt.

pwd
cd /var/log
pwd

Das zweite pwd gibt /var/log aus, wenn die Verschiebung erfolgreich war. Wenn cd fehlschlägt, ändert sich das aktuelle Arbeitsverzeichnis nicht.

Unterschied zwischen -L und -P

Wenn der Pfad zum aktuellen Standort symbolische Links enthält, können sich der logische Pfad und der physische Pfad unterscheiden.

Option Aktion
-L, --logical Verwendet den von der Shell gemerkten logischen Pfad. Die während der Navigation verwendeten symbolischen Linknamen können im Pfad verbleiben.
-P, --physical Gibt den physischen Verzeichnispfad nach Auflösung der symbolischen Links aus.

Überprüfen des logischen Pfads mit -L

Angenommen, dass /srv/current ein symbolischer Link ist, der auf das tatsächliche Bereitstellungsverzeichnis zeigt.

cd /srv/current
pwd -L

Wenn die Shell den logischen Standort korrekt verwaltet, kann der vom Benutzer eingegebene Linkpfad wie folgt beibehalten werden.

/srv/current

Überprüfen des tatsächlichen Pfads mit -P

pwd -P

Wenn /srv/current auf /srv/releases/2026-09 zeigt, kann der physische Pfad wie folgt ausgegeben werden.

/srv/releases/2026-09

Die Option -P ist nützlich, wenn Sie überprüfen möchten, auf welches Verzeichnis der Deployment-Link tatsächlich zeigt, oder wenn Sie einen Pfad benötigen, der nicht vom Namen des symbolischen Links abhängt.

Shell-internes pwd und externes pwd

Viele Shells, einschließlich Bash, stellen pwd als eingebauten Befehl zur Verfügung. Das System kann auch das externe ausführbare Programm von GNU Coreutils installiert haben.

type -a pwd
command -V pwd

Abhängig von der Umgebung können sowohl der eingebettete Shell-Befehl als auch das externe ausführbare Programm wie folgt angezeigt werden.

pwd is a shell builtin
pwd is /usr/bin/pwd

Gründe für die Verwendung des eingebauten Shell-Befehls

Die Shell verwaltet direkt ihr Arbeitsverzeichnis und den logischen Pfad beim Wechseln von Verzeichnissen mit cd. Daher kann das eingebaute pwd diese Informationen ausgeben, ohne einen separaten Prozess zu starten.

-L und -P können im Allgemeinen sowohl mit eingebauten als auch externen Befehlen verwendet werden, aber die detaillierten Optionen können je nach Shell und Betriebssystem variieren.

Explizites Ausführen externer Befehle

Um das Verhalten von GNU Coreutils-Programmen zu überprüfen, können Sie den vollständigen Pfad angeben. Der tatsächliche Speicherort kann je nach Distribution unterschiedlich sein.

/usr/bin/pwd
/usr/bin/pwd -P

Für Skripte, die portabel sein müssen, ist es besser, nicht anzunehmen, dass ein bestimmter absoluter Pfad auf allen Systemen existiert.

PWD- und OLDPWD-Umgebungsvariablen

Die Shell kann den aktuellen Ort und den vorherigen Ort als Variablen verwalten. Die Variablennamen sind in Großbuchstaben, daher sollten sie von dem Befehl pwd unterschieden werden.

Eintrag Bedeutung
pwd Ein Befehl, der das aktuelle Arbeitsverzeichnis ausgibt.
PWD Der logische Pfad des aktuellen Arbeitsverzeichnisses, den sich die Shell merkt.
OLDPWD Normalerweise das gerade zuvor verwendete Arbeitsverzeichnis. Es wird in cd - verwendet.
printf '%s\n' "$PWD"
printf '%s\n' "$OLDPWD"
pwd -L
pwd -P

PWD ist eine Shell-Variable, daher kann sie, wenn der Benutzer sie beliebig ändert oder sie abnormal wird, möglicherweise nicht dem tatsächlichen Ort entsprechen. Wenn der tatsächliche Pfad im Dateisystem wichtig ist, prüfen Sie ihn mit pwd -P.

Verwendung in Shell-Skripten

Überprüfen des Ausführungsortes

Wenn davon ausgegangen wird, dass das Skript in einem bestimmten Verzeichnis ausgeführt wird, können Sie den Ort überprüfen, bevor Sie die Arbeit ausführen.

current_dir=$(pwd -P) || exit 1
printf 'Current working directory: %s\n' "$current_dir"

Wenn Sie das Ergebnis der Befehlsersetzung verwenden, setzen Sie die Variable in doppelte Anführungszeichen, um Pfade mit Leerzeichen als ein einziges Wort zu behalten.

Unterscheidung vom Speicherort der Skriptdatei

Was pwd ausgibt, ist nicht das Verzeichnis, in dem das Skript gespeichert ist, sondern das aktuelle Arbeitsverzeichnis des Prozesses, der das Skript ausgeführt hat.

cd /tmp
/opt/tools/backup.sh

In diesem Fall gibt pwd, ausgeführt innerhalb von backup.sh, normalerweise /tmp aus. Wenn Sie den eigenen Speicherort des Skripts benötigen, müssen Sie separat den Shell-Typ, die Handhabung symbolischer Links und die Art und Weise, wie das Skript aufgerufen wird, berücksichtigen.

Vergleich von pwd und verwandten Befehlen

Befehl Zweck
pwd Gibt den Pfad des aktuellen Arbeitsverzeichnisses aus.
cd Ändert das Arbeitsverzeichnis der aktuellen Shell.
realpath Normiert den angegebenen Dateinamen oder Pfad und gibt ihn als absoluten Pfad aus.
dirname Gibt den Teil eines Pfadstrings ohne die letzte Komponente aus.
readlink Überprüft die Zielzeichenfolge, die in einem symbolischen Link gespeichert ist.

Häufige Probleme

Gelöschtes oder unzugängliches aktuelles Verzeichnis

Wenn der aktuelle Speicherort oder ein übergeordnetes Verzeichnis von einem anderen Prozess gelöscht wird oder die Zugriffsrechte geändert werden, kann pwd möglicherweise den Pfad nicht bestimmen und einen Fehler erzeugen. Wechseln Sie zu einem zugänglichen übergeordneten Verzeichnis und überprüfen Sie es erneut.

Der Pfad und die Ausgabe unterscheiden sich von dem, was erwartet wurde

Wenn Sie einem symbolischen Link gefolgt sind, können die Ergebnisse von pwd -L und pwd -P unterschiedlich sein. Das bedeutet nicht, dass einer der Pfade falsch ist; es zeigt zwei verschiedene Perspektiven: den logischen Namen und den physischen Speicherort.

Die Pfade ändern sich in Skripten

Cron, systemd, CI-Jobs und Container können Programme in einem Arbeitsverzeichnis starten, das sich von einem interaktiven Terminal unterscheidet. Bevor Sie relative Pfade verwenden, zeichnen Sie die Ausführungsumgebung mit pwd auf oder verwenden Sie einen klaren absoluten Pfad und setzen Sie das Arbeitsverzeichnis.

FAQ

Wofür steht pwd?

Es steht für print working directory und gibt den Pfad des aktuellen Arbeitsverzeichnisses aus.

Ist pwd dasselbe wie echo "$PWD"?

In einem normalen Shell-Zustand können ähnliche logische Pfade erscheinen, aber sie verhalten sich nicht gleich. PWD ist eine Shell-Variable, während pwd ein Befehl ist, der den aktuellen Ort ausgibt, und pwd -P kann den physischen Pfad durch Auflösen von symbolischen Links ermitteln.

Welchen sollte ich verwenden, pwd -L oder pwd -P?

Verwenden Sie -L, wenn Sie den Pfadnamen beibehalten möchten, durch den der Benutzer navigiert hat, und verwenden Sie -P, wenn Sie den tatsächlichen Dateisystempfad mit aufgelösten symbolischen Links benötigen.

Gibt pwd den Speicherort aus, an dem das Skript gespeichert ist?

Nein. Es gibt das aktuelle Arbeitsverzeichnis des Prozesses aus, der das Skript ausführt. Der Speicherort der Skriptdatei und das aktuelle Arbeitsverzeichnis können unterschiedlich sein.

Weitere Angaben zu Syntax, Implementierung und Verfügbarkeit finden Sie unter GNU Coreutils offizielle pwd Dokumentation und POSIX pwd Spezifikation.