Was ist das Verzeichnis "//"?

12

Auf verschiedenen Linux-Rechnern können Sie

cd /

und

cd //

Die Shell sagt, dass das aktuelle Verzeichnis '/' oder '//' ist, nachdem der entsprechende Befehl verwendet wurde.

Die Frage lautet also: Was ist der Unterschied zwischen '/' und '//', und wenn die Antwort 'kein Unterschied' lautet, warum wird '//' anders angezeigt als '/'?

Übrigens

cd ///
cd ////
cd /////

Alle Ergebnisse in der Shell besagen, dass das aktuelle Verzeichnis '/' ist

Hier ist eine Beispielsitzung:

[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$
Sylvanaar
quelle
2
Dies scheint eine bashspezifische Anomalie zu sein. Wenn Sie es cd //in csh oder zsh versuchen pwd, wird nur '/'
Doug Harris
interessant - das wirft etwas licht auf sie
sylvanaar
1
Zum Vergleich: cd //usr/bingibt "// usr / bin", aber cd /usr//bin"/ usr / bin" (in Bash).
Bis auf weiteres angehalten.

Antworten:

14

Fragen wir den Mann selbst (Chester Ramey):

E10) Warum lässt 'cd //' $ PWD als '//'?

POSIX.2 in der Beschreibung von 'cd' besagt, dass drei oder mehr führende Schrägstriche durch einen einzelnen Schrägstrich ersetzt werden können, wenn das aktuelle Arbeitsverzeichnis kanonisiert wird.

Ich nehme an, dies dient der historischen Kompatibilität. Bestimmte Versionen von Unix und früheren Netzwerkdateisystemen verwendeten Pfade der Form // Hostname / Pfad, um auf 'Pfad' auf dem Server 'Hostname' zuzugreifen.

Bis auf weiteres angehalten.
quelle
Viel bessere Antwort als die (schon ziemlich gute) von John T.
innaM
9

Es ist kein tatsächliches Verzeichnis, sondern ein spezifisches Problem mit bash. Es wird in The Linux Documentation Project verwiesen .

John T
quelle
4
Warum hat es noch niemand repariert? oder haben sie?
Sylvanaar