Ich habe in meinem Terminal gearbeitet, als ich cd falsch geschrieben habe zum Rooten (/ ). Aus Versehen habe ich // eingegeben und ich kam ins Terminal:
[email protected]://#
Wenn ich pwd eingebe , bekomme ich die Antwort // aber wenn ich ls -s eingebe Ich habe dieselbe Liste wie in / Verzeichnis.
Wenn Sie mehr als 2 eingeben, d. h. /// Sie erhalten:
[email protected]:/#
Immer 1 / außer 2. Gibt es einen Unterschied und was ist // für?
Beste Antwort
/ entspricht //
Aus der POSIX-Spezifikation (Hervorhebung hinzugefügt):
3.267 Pfadname
Eine Zeichenfolge, die zum Identifizieren einer Datei verwendet wird. Im Kontext von
POSIX.1-2008 kann ein Pfadname auf {PATH_MAX} Bytes beschränkt sein, einschließlich
des abschließenden Nullbytes. Es hat einen optionalen Anfang <slash> Zeichen, gefolgt von null oder mehr Dateinamen, getrennt durch <slash> Figuren. Ein Pfadname kann optional einen oder mehrere nachgestellte <slash> enthalten Figuren. Mehrere aufeinanderfolgende <slash> Zeichen gelten
als identisch mit einem <slash> , außer im Fall von
genau zwei führenden <slash> Zeichen.
Und:
4.12 Auflösung von Pfadnamen
…
Ein Pfadname, der aus einem einzelnen <slash> besteht soll in das Stammverzeichnis
des Prozesses aufgelöst werden. Ein Null-Pfadname darf nicht erfolgreich
aufgelöst werden. Wenn ein Pfadname mit zwei aufeinanderfolgenden <slash> beginnt Zeichen,
die erste Komponente nach dem führenden <slash> Zeichen können
implementierungsdefiniert interpretiert werden, obwohl mehr als
zwei führende <slash> Zeichen werden als einzelner <slash> behandelt Charakter.
Für eine nette Diskussion über Ausnahmen (Cygwin und Verzeichnisse) siehe:Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?