In der gesamten POSIX-Spezifikation ist vorgesehen ( 1 , 2 , 3 ...), dass Implementierungen einen mit zwei beginnenden Pfad /
speziell behandeln können.
Eine POSIX-Anwendung (eine in die POSIX-Spezifikation geschriebene Anwendung, die auf alle POSIX-kompatiblen Systeme portierbar sein soll) kann nicht davon ausgehen, dass sie //foo/bar
mit identisch ist /foo/bar
(obwohl sie davon ausgehen können, dass sie ///foo/bar
mit identisch ist /foo/bar
).
Was sind nun die POSIX-Systeme (historisch und immer noch gewartet), die //foo
speziell behandeln ? Ich habe geglaubt (ich habe mich jetzt als falsch erwiesen ), dass die POSIX-Bereitstellung von Microsoft für die Unix-Variante (XENIX) und möglicherweise für die Windows-POSIX-Ebene (kann das jemand bestätigen?) Vorangetrieben wurde.
Es wird von Cygwin verwendet, einer POSIX-ähnlichen Ebene für Microsoft Windows. Gibt es nicht von Microsoft stammende Windows-Systeme? OpenVMS?
//foo/bar
Wofür wird es auf Systemen mit besonderen Eigenschaften verwendet? //host/path
für den Zugriff auf Netzwerkdateisysteme? Virtuelle Dateisysteme?
Behandeln einige Anwendungen, die unter Unix-Likes ausgeführt werden - sofern nicht die System-API - //foo/bar
Pfade speziell (in Kontexten, in denen sie ansonsten /foo/bar
als Pfad im Dateisystem behandelt werden)?
Bearbeiten , ich habe seitdem eine Frage in der Mailingliste der Austin-Gruppe nach dem Ursprung der //foo/bar
Handhabung in der Spezifikation gestellt, und die Diskussion ist eine interessante Lektüre (zumindest aus archäologischer Sicht).
quelle
ls -ld ///
würde auch anzeigen///
,ls
zeigt nur die Datei an, die angezeigt werden soll, wie sie angegeben wurde. Ich suche nach Systemen oder Anwendungen, die // foo / var speziell behandeln (nicht als Pfad im Dateisystem) wie Cygwin.IBM's z/OS resolves //pathname requests to MVS datasets (as opposed to the hierarchical filesystem (HFS)) (......) Additionally, z/OS would not accept or recognize additional "directory" or "file" components appended to such paths.
... allerdings nicht gerade unter Unix ^^).file://
, ähnlich wiehttp://
und so. Auf Chrom hier bei der Arbeit ist ein Windows-UNC-Pfad, den ich jetzt geöffnet habefile:////$MACHINE/$SHARENAME/index.html
(obwohl es aus irgendeinem Grund auch verstehtfile://$MACHINE/...
)Antworten:
Dies ist eine Zusammenstellung und ein Index der bisher gegebenen Antworten. Dieser Beitrag ist ein Community-Wiki und kann von jedem mit über 100 Reputationen bearbeitet werden, von dem niemand eine Reputation erhält. Sie können gerne Ihre eigene Antwort posten und hier einen Link hinzufügen (oder warten, bis ich es tue). Im Idealfall 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:
//host/file
PfadezurDateifreigabe im Netzwerk.//pathname
Anforderungen in MVS-Datasets und nicht in Netzwerkdateien auf. Beispiel .Nicht mehr existierende Systeme
@BinaryZebra Apollo Domain / OS (bestätigt). Auch bei der offiziellen Beschreibung UNC (Universal Naming Convention) als möglicher Ursprung von
//host/path
Notationen erwähnt ( siehe auch Seite 2-15).Laut Donn Terry war es HP (das Apollo Computers erworben hat), das sich für die Aufnahme dieser Bestimmung in die POSIX-Spezifikation für Domain / OS einsetzte.
@jillagre Tektronix Utek ( bestätigt ), wobei
//host/path
sich ein Pfad auf einem verteilten Dateisystem befindet .//123/path
/path
//host/path
in (eingestellt in SVR4) RFS Remote File Sharing System.//host/path
.Anwendungen, die
//foo/bar
speziell für Pfade behandeln//depot/A/B/C/D
bezieht sich auf einen Pfad in einem Depot .//
Präfix für relative Pfade (zu der mit dem Datenblock verknüpften Überblendung) .quelle
//
Namespace wurde von einigen Linux-Kernel-Entwicklern für die Metadaten-Funktionen von Reiser4 vorgeschlagen, aber ich glaube nicht, dass dieser Vorschlag jemals innerhalb von Namesys Anklang gefunden hat, noch wurde er jemals implementiert.Mir ist bekannt, dass Perforce
//depot/A/B/C/D
Pfade verwendet, um auf das Depot zu verweisen. Perforce unterstützt auch//Client/C/D
Pfade, auf die der Client zeigt//depot/A/B/
. In diesem Fall verfügt das lokale Dateisystem möglicherweise nicht über diese Pfade.p4 filelog //depot/A/B/C/D
zeigt den Verlauf dieser Datei an, obwohl keine Datei vorhanden ist/depot/A/B/C/D
.p4 filelog C/D
zeigt auch den Verlauf dieser Datei an, wenn sie über das entsprechende Verzeichnis ausgeführt wird.Referenz: https://www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html
quelle
Vor einigen Jahrzehnten stellte Tektronix Utek (BSD 4.2-basiertes Unix, zuerst auf 32016- CPUs von National Semiconductors, dann auf Motorola 68020 s) das so genannte DFS (Distributed File System) bereit, unter dem
//foo/bar
auf die/bar
Datei auf demfoo
DFS-Server verwiesen wurde. Es wurde später von Suns NFS überholt.Leider habe ich noch keinen Hinweis darauf, aber ich könnte irgendwann eine Utek-Dokumentation in meinem Keller finden und diese Antwort aktualisieren.
quelle
find
beispielsweise das Überqueren des Einhängepunkts zu vermeiden . Der Autor//foo/bar
/../foo/bar
Dem Beispiel dieser Antwort folgen . Und lies Seite 2-15 aus dem Handbuch von Bitsavers (danke @grawity ).
Es gibt auch ein älteres Handbuch mit einem "First Printing: July, 1985". Auf Seite 1-4:
Wir haben also die Bestätigung, dass Domain / OS von Apollo
//
als Netzwerkstamm verwendet wird.quelle
Eine andere Anwendung: Blender behandelt einen Lead
//
als Verweis auf das Projektverzeichnis (das Verzeichnis, in dem die.blend
Datei gespeichert ist). Hier ist die entsprechende Handbuchseite .Dies gilt auch für nicht-Unix-ähnliche Betriebssysteme (z. B. Windows).
quelle
Das ReactOS- Projekt, bei dem es sich um eine kostenlose und Open-Source-Implementierung des NT-Kernels und verwandter APIs handelt, hat sich anscheinend vorgenommen, auch ein eigenes Interix- ähnliches POSIX-Subsystem zu implementieren (obwohl das ursprüngliche OS / 2-Subsystem von MS auch im Zusammenhang erwähnt wird , keine Erwähnung) besteht aus einem ReactOS-Analogon) .
Obwohl die Anstrengungen bisher gering waren ,
fork()
ist dies anscheinend eine Realität. Hier ist ein Auszug aus der Projektseite des Subsystems, wie unter " Offene Probleme" aufgeführt :Ich bin mir nicht sicher, wie das qualifiziert ist, da ich nicht sicher bin, wie viel davon implementiert wurde, aber ich dachte, dass es eine nützliche interessante Beschreibung des Problems war.
quelle
//foo/bar
Handhabung nicht erwähnt . Ich habe bisher keine soliden Beweise dafür gefunden, dass das Windows POSIX-Subsystem oder Interix sie tatsächlich handhabten.lsacl
Befehl muss verstanden werden,\\machinename\driveletter:\path
während seinregistry
Befehl angegeben wurde, um diese Form zu verstehen, oder wahlweise in//
beide Richtungen. Da das MKS-Kit der Vorgänger von Interix war und das war, was MS für die Versionen 1/2 geliefert hat, würde ich denken, dass Interix für solch eine grundlegende Sache kompatible Syntax akzeptiert haben muss.In den 1980er Jahren hatte SEL / Gould ein Unix-Betriebssystem namens UTX-32, das mit Solaris vergleichbar war. dh Remote-Zugriffspfad auf dem Host . Ich kann keine Dokumentation finden, daher weiß ich nicht, ob dies RFS oder Parallel Evolution war (oder ob AT & T
//host/path
/net/host/path
path
host
Stahlerwarb es von Gould).quelle
//host/path
in UTX-32)?Ich habe eine vage Erinnerung, dass die
//host/path
Notation auf AT & T SysV.3 als Teil der RFS Remote File Sharing- Implementierung verwendet wurde. Dies wurde schließlich eingestellt, als SysV.4 zugunsten des einfacheren, aber populäreren NFS von Sun Microsystems veröffentlicht wurde.Ich kann jedoch keine konkreten Verweise auf die Syntax finden, und die Dokumentation, die ich gerade durchgesehen habe, scheint darauf hinzudeuten, dass die Idee, dass der Benutzer explizit einen Remote-Hostnamen angibt, dem Entwurfsprinzip der Standortunabhängigkeit widersprochen hätte.
Referenzen 1. Übersicht über die RFS-Architektur
quelle
//host/path
. Anscheinend müssen Netzwerkdateisysteme explizit eingehängt werden.POSIX gibt in den Begründungen für A.4.12, Auflösung von Pfadnamen, Absätze 9 und 10 an:
Dies scheint zu bestätigen, dass
//
dies "Netzwerkstamm" bedeutet, oder zumindest, dass dies die Idee war, als die Regel in POSIX aufgenommen wurde.Die folgenden Regeln entfernen die Bedeutung von
//
in der Mitte eines Pfads für einen/
gestarteten Pfadnamen:Natürlich kann ein
//
gestarteter Pfadname die Verwendung//
innerhalb eines Pfadnamens erweitern oder ändern (nicht am Anfang). POSIX.1 erlaubt dies. Letzteres bestätigt, dass sich die einzigen//
zulässigen am Anfang eines Pfadnamens befinden.quelle