GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Auf welchen Systemen unterscheidet sich //foo/bar von /foo/bar?

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.
Verwandte:Wie kann man eine Nachricht von einem Programm unterdrücken, während man es installiert, um es in einem Bash-Programm zu verwenden??
Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Debian – /var, /home auf separate Partition verschieben?

  3. Ist Rsync ~/foo Target/foo dasselbe wie Rsync ~/foo/Target/foo/?

  4. Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

  5. Wie finde ich heraus, aus welchem ​​Ordner ein Prozess läuft?

Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

DD von /dev/zero nach /dev/null ... was eigentlich passiert

Warum andere Dinge als /home auf eine separate Partition legen?

Was ist der Unterschied zwischen /tmp und /run?

echo oder print /dev/stdin /dev/stdout /dev/stderr

Warum sind < oder > erforderlich, um /dev/tcp