Warum ist der Pfad mit mehr Root-Slashes gültig?

462
Meowxiik

Wenn Sie unter Linux das Verzeichnis in "//" ändern, können Sie das Dateisystem durchsuchen, während Ihr Root-Verzeichnis "//" ist. Dies geschieht nicht mit mehr Schrägstrichen, mehr Schrägstriche erzeugen das ursprüngliche '/'.

Mögliche Arbeitsverzeichnisse:

[user@host /]$ cd // [user@host //]$ pwd # Results in double root // [user@host //]$ cd srv/ftp [user@host ftp]$ pwd # Double root is preserved but no other effects observed //srv/ftp [user@host /]$ cd //// [user@host /]$ cd /////// [user@host /]$ cd ////////// # Additional slashes change nothing [user@host /]$  

Warum passiert das? Wie ist es überhaupt gültig?

(Beobachtet auf Linux-Host 4.18.16-arch1-1-ARCH # 1 SMP-PRÄMPT Sa 20.10 22:06:45 UTC 2018 x86_64 GNU / Linux)

3
Sehr relevant: [Auf welchen Systemen unterscheidet sich // foo / bar von /foo/bar?(((ttps://unix.stackexchange.com/q/256497/23408) Scott vor 6 Jahren 0

1 Antwort auf die Frage

0
Meowxiik

Nun, ich habe die Antwort nach einer besseren Suche gefunden. Es stellt sich heraus:

Mehrere Schrägstriche sind zulässig und entsprechen einem einzelnen Schrägstrich. Aus der Single Unix-Spezifikation (Version 3), Basisdefinitionen §3.266 Pfadname: "Mehrere aufeinanderfolgende Schrägstriche werden als ein Schrägstrich betrachtet."

Es gibt eine Ausnahme: Wenn ein Pfadname mit genau zwei Schrägstrichen beginnt, kann er anders behandelt werden (ref: Basisdefinitionen §4.11 Pfadnamenauflösung). Linux selbst macht dies nicht, obwohl einige Anwendungen dies tun können, andere Unix-Systeme (z. B. Cygwin).

Quelle: https://unix.stackexchange.com/a/1919/276644