Ist der Schrägstrich (/
) wirklich Teil des Namens des Linux-Stammverzeichnisses? Oder ist es nur ein Symbol dafür?
Was ist mit /etc
und so weiter?
Aktualisieren
Angenommen /dev/sda2
ist das Blockgerät eines Linux-Stammverzeichnisses.
$ sudo debugfs /dev/sda2 debugfs 1.44.1 (24-Mar-2018) debugfs: pwd [pwd] INODE: 2 PATH: / [root] INODE: 2 PATH: / debugfs: stat / Inode: 2 Type: directory Mode: 0755 Flags: 0x80000 Generation: 0 Version: 0x00000000:00000077 User: 0 Group: 0 Project: 0 Size: 4096 File ACL: 0 Links: 25 Blockcount: 8 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x5b13c9f1:3f017990 -- Sun Jun 3 15:28:57 2018 atime: 0x5b13ca0f:3b3ee380 -- Sun Jun 3 15:29:27 2018 mtime: 0x5b13c9f1:3f017990 -- Sun Jun 3 15:28:57 2018 crtime: 0x5aad1843:00000000 -- Sat Mar 17 16:59:39 2018 Size of extra inode fields: 32 EXTENTS: (0):9249
Da ist also ein Verzeichnis drin, Inode #2, aber es hat keinen Namen.
Akzeptierte Antwort:
Der POSIX.1-2008-Standard sagt
Ein Pfadname, der aus einem einzelnen /
besteht soll in das Stammverzeichnis
des Prozesses aufgelöst werden. Ein Null-Pfadname wird nicht erfolgreich
aufgelöst.
Der Standard unterscheidet außerdem zwischen Dateinamen und Pfadnamen . /
ist der Pfadname für den Pfad des Stammverzeichnisses. Der Name des Verzeichnisses ist „das Stammverzeichnis“, aber im Dateisystem ist es namenlos, es hat keinen Dateinamen. Wenn es einen Dateinamen hätte, wäre dieser Name ein Verzeichniseintrag im Verzeichnis über dem Stammverzeichnis, und es gibt kein solches Verzeichnis.
Das Zeichen /
kann niemals Teil eines Dateinamens sein, da es das Pfadtrennzeichen ist.
Zur Verdeutlichung:/
ist nicht der Name des Stammverzeichnisses, sondern der Pfad dazu der Pfadname .
/etc
ist ein anderer Pfadname. Es ist der Name des absoluten Pfads zum etc
Verzeichnis. Der Name des Verzeichnisses in diesem Pfad ist etc
(Ihr Dateiname ist etc
).
/usr/local/bin/curl
ist der Pfadname von curl
ausführbare Datei genauso wie /etc
ist der Pfadname von etc
Verzeichnis.