In der gesamten POSIX-Spezifikation gibt es Vorkehrungen (1, 2, 3 …), die es Implementierungen ermöglichen, einen Pfad zu behandeln, der mit zwei /
beginnt speziell.
Eine POSIX-Anwendung (eine Anwendung, die nach der POSIX-Spezifikation geschrieben wurde, um auf alle POSIX-kompatiblen Systeme portierbar zu sein) kann nicht davon ausgehen, dass //foo/bar
ist dasselbe wie /foo/bar
(obwohl sie davon ausgehen können, dass ///foo/bar
ist dasselbe wie /foo/bar
).
Was sind nun diese POSIX-Systeme (historisch und noch gepflegt), die //foo
behandeln speziell? Ich glaubte (ich habe mich jetzt als falsch erwiesen), dass die POSIX-Bereitstellung von Microsoft für ihre Unix-Variante (XENIX) und möglicherweise die Windows-POSIX-Schicht vorangetrieben wurde (kann das jemand bestätigen?).
Es wird von Cygwin verwendet, das auch eine POSIX-ähnliche Schicht für Microsoft Windows ist. Gibt es Nicht-Microsoft-Windows-Systeme? OpenVMS?
Auf Systemen, auf denen //foo/bar
ist etwas Besonderes, wofür wird es verwendet? //host/path
für den Zugriff auf Netzwerkdateisysteme? Virtuelle Dateisysteme?
Machen Sie einige Anwendungen die auf Unix-ähnlichen Systemen laufen – wenn nicht die API des Systems – behandeln //foo/bar
Pfade besonders (in Kontexten, in denen sie ansonsten /foo/bar
behandeln als Pfad im Dateisystem)?
Bearbeiten , habe ich seitdem eine Frage an die Mailingliste der Austin-Gruppe zum Ursprung von //foo/bar
gestellt Handhabung in der Spezifikation, und die Diskussion ist interessant zu lesen (zumindest aus archäologischer Sicht).
Akzeptierte Antwort:
Dies ist eine Zusammenstellung und ein Index der bisher gegebenen Antworten. Dieser Beitrag ist Community-Wiki , kann es von jedem mit 100+ Reputation bearbeitet werden und niemand bekommt davon Reputation. Fühlen Sie sich frei, Ihre eigene Antwort zu posten und hier einen Link dazu hinzuzufügen (oder warten Sie, bis ich es tue). Idealerweise sollte diese Antwort nur eine Zusammenfassung sein (mit kurzen Einträgen, während einzelne andere Antworten die Details enthalten würden).
Derzeit aktiv gewartete Systeme:
- Cygwin . Eine POSIX-Schicht für Microsoft Windows. Wird für Windows-UNC-Pfade verwendet.
- UWIN seit 1.3. Eine weitere POSIX-Schicht für Windows. Wird zumindest für
//host/file
verwendet Dateifreigabepfade im Netzwerk. - IBM z/OS Wie im POSIX-Bugtracker erwähnt, löst z/OS
//pathname
auf Anfragen an MVS-Datensätze , nicht zu Netzwerkdateien. Beispiel.
Ausgefallene Systeme
-
Apollo-Domain/OS (Bestätigt). Wird auch in der offiziellen Beschreibung UNC (Universal Naming Convention) als möglicher Ursprung von
//host/path
erwähnt Notationen (siehe auch Seite 2-15).Laut Donn Terry war es HP (das Apollo Computers übernahm), das auf die Aufnahme dieser Bestimmung in die POSIX-Spezifikation für Domain/OS drängte.
-
Tektronix Utek (bestätigt), wobei
//host/path
ist ein Pfad auf einem verteilten Dateisystem . -
QNX4 mit dem verteilten Verarbeitungssystem FLEET, wobei
//123/path
ist ein/path
auf Knoten 123. (Erwähnt in der QNX 6-Dokumentation.) -
AT&T SysV Release 3 (ungeprüft).
//host/path
in (eingestellt in SVR4) RFS Remote File Sharing System. -
SEL/Gould UTX-32 (ungeprüft). Wird für
//host/path
verwendet .
Anwendungen, die //foo/bar
behandeln speziell für Pfade
- Notwendigerweise wobei
//depot/A/B/C/D
bezieht sich auf einen Pfad in einem Depot . - Mixer . In seiner Konfiguration verwenden Sie einen
//
Präfix für relative Pfade (zu der Mischung, die dem Datenblock zugeordnet ist). - Die Bazel Build-System verwendet einen
//
Präfix für Bezeichnungen von Zielen innerhalb des Bazel-Build-Diagramms.