# Pfadname

Ein Pfadname, auch kurz Pfad, ist eine Zeichenfolge, die eine Datei, ein Verzeichnis oder je nach Plattform auch andere Ressourcen auf einem Computersystem, zum Beispiel Gerätedateien unter Unix, bezeichnet.

## Aufbau

Je nach Betriebssystem besteht ein Pfadname aus folgenden Elementen:
* einer Laufwerks- oder Datenträgerbezeichnung
* einer Liste von Verzeichnissen bzw. (Unter-)Verzeichnissen
* einem Dateinamen – außer bei Verzeichnispfaden, wo dieser logischerweise fehlt.
Bei Dateinamen wird auch von einem absoluten Pfad gesprochen, wenn dieser wie angegeben „vollständig“ ist. Wird ein Dateiname weggelassen und handelt es sich um einen Pfad auf ein Verzeichnis, so wird dies als Verzeichnispfad bezeichnet. Je nach Kontext kann das eine oder das andere Verwendung finden, beispielsweise sind nur Verzeichnispfade für die Umgebungsvariable PATH sinnvoll, nicht absolute oder relative Pfade auf Dateien.
Fast alle modernen Betriebssysteme sind darauf ausgelegt, Daten (und damit Dateien und Verzeichnisse) auf mehreren Datenträgern zu verwalten. Bei der Adressierung der Daten werden unterschiedliche Wege beschritten:
* Unter Windows beispielsweise wird einem Pfad ein Kennbuchstabe, der Laufwerksbuchstabe, für das entsprechende Laufwerk vorangestellt, der u. a. zur Unterscheidung verschiedener Datenträger dient. Es sind jedoch auch Pfade möglich, denen dieser Kennbuchstabe fehlt, beispielsweise ein Netzlaufwerk, dem kein Laufwerksbuchstabe zugeordnet wurde.
    Beispiel für einen Pfadnamen unter Windows: C:\privat\TestData\Beispiel.txt
    Hier bezeichnet der Laufwerksbuchstabe C: das logische Laufwerk (z. B. eine Partition, ein externer Datenspeicher wie ein USB-Speicherstick, ein Netzlaufwerk), auf den sich die weitere Pfadangabe bezieht. In der obersten Ebene des Dateibaumes darauf gibt es ein Verzeichnis privat, darunter ein Unterverzeichnis mit dem Namen TestData, und dort ist die Datei Beispiel.txt zu finden.
* Unter Unix und Unix-artigen Systemen (z. B. Linux, BSD-Derivate) sowie solchen, die sich lose an Unix orientieren (z. B. Plan 9, Haiku), gibt es ein Wurzelverzeichnis (englisch root directory), von dem ausgehend rein verzeichnisorientiert adressiert wird. Das Wurzelverzeichnis entspricht damit dem Systemlaufwerk und es liegt in der Regel auf dem Datenträger, von dem der Systemstart erfolgte. Das Betriebssystem unterstützt die Einbindung der weiteren verfügbaren Datenträger dann durch Verwaltung von Einhängepunkten, englisch mount points.
    Beispiel für einen Dateinamen unter Unix: /home/benutzer/Beispieldatei
    Hier gibt es im Wurzelverzeichnis ein Verzeichnis home, darunter benutzer (bzw. das jeweilige Benutzerverzeichnis), und dort liegt Beispieldatei.
Aus der Pfadangabe allein ist oft nicht ersichtlich, auf welchem Datenträger eine Datei liegt, weil die Zuordnung logische Laufwerke erlaubt. Unter Windows ist der Laufwerksbuchstabe entscheidend, wie er z. B. beim Anstecken eines externen Datenspeichers (wie eines USB-Sticks) vergeben wird. Unter Linux folgen derartige Einbindungen normalerweise einer logischen Struktur wie dem Filesystem Hierarchy Standard. Wechseldatenträger sind hier systemweit meist unter /media zu finden, oder für jeden Benutzer einzeln unter /run/media oder /run/mount. Auf klassischem Unix musste ein Benutzer mit den erforderlichen Rechten externe Speichermedien noch per Eingabe entsprechender Kommandos (mount und umount) auf der Unix-Shell selbst einbinden, etwa unter /mnt. Interner Datenspeicher, etwa Partitionen auf der Festplatte, werden hingegen auch weiterhin meist systemweit in der fstab-Datei konfiguriert, obwohl es auch hier inzwischen Automatismen gibt, etwa mit systemd und sog. „auto-mount“-Partitionskennungen der GUID-Partitionstabelle.

## Absolute und relative Pfadnamen

Aus Betriebssystemsicht ist ein Pfadname nur unmissverständlich, wenn er wie oben beschrieben vollständig angegeben wird. Um Bedienung und Programmentwicklung zu vereinfachen, ist es auf den meisten Systemen aber möglich, mit sogenannten relativen Pfadnamen zu arbeiten. Dabei werden einzelne Komponenten eines Pfadnamens weggelassen, z. B. die Laufwerksangabe oder ein Teil der vorangestellten Verzeichnisliste.
Beispiele für relative Pfadnamen:
* Windows: subdir\testfile oder .\autoexec.bat oder ..\daten\tabelle1.xls
* Unix: ../lib/libXYZ.a
Als Bezugspunkte für relative Pfadnamen wird seitens des Betriebssystems das jeweilige Arbeitsverzeichnis herangezogen; beispielsweise wird für jedes laufende Programm das aktuelle Laufwerk sowie das aktuelle Verzeichnis verwaltet. Unvollständige, „relative“ Pfadangaben werden dann ausgehend von den aktuellen Werten interpretiert.
Beispiel (Windows):
* Aktuelles Laufwerk ist C:
* Aktuelles Verzeichnis ist \privat\texte
    Ein Zugriff auf den relativen Pfad ..\daten\tabelle1.xls wird dann ausgehend von C:\privat\texte interpretiert als C:\privat\texte\..\daten\tabelle1.xls. Die Zeichenfolge .. bedeutet einen Wechsel ins übergeordnete Verzeichnis. Damit lautet der aufgelöste, vereinfachte Pfadname dann C:\privat\daten\tabelle1.xls. Ebenso kann man in diesem Beispiel mit .\text1.txt den Pfad C:\privat\texte\text1.txt aufrufen, da . immer für das aktuelle Verzeichnis steht.
    Anstelle des Laufwerksbuchstabens ist es heute auch üblich geworden, die Namen im UNC-Format anzugeben und anstelle des Laufwerksbuchstabens auch in Windows-Systemen den Servernamen anzugeben. Siehe auch Uniform Naming Convention.

## Standardpfad

Je nach Art und Zweck der zu speichernden Dateien erfolgt ihre Ablage standardmäßig an bestimmten Stellen innerhalb hierarchisch strukturierter Verzeichnisbäume. Siehe beispielsweise Initialisierungsdatei #Speicherort.
Unter Linux gibt der Filesystem Hierarchy Standard vor, wo sich welche Programme und Dateien zu befinden haben.