Dans toute la spécification POSIX, il est prévu ( 1 , 2 , 3 ...) de permettre aux implémentations de traiter un chemin commençant par deux /
spécialement.
Une application POSIX (une application écrite dans la spécification POSIX pour être portable sur tous les systèmes compatibles POSIX) ne peut pas supposer qu'elle //foo/bar
est identique à /foo/bar
(bien qu'elle puisse supposer qu'elle ///foo/bar
est identique à /foo/bar
).
Maintenant, quels sont les systèmes POSIX (historiques et toujours maintenus) qui traitent //foo
spécialement? Je pensais (je me suis maintenant trompé ) que Microsoft avait mis à disposition POSIX pour la variante Unix (XENIX) et éventuellement la couche Windows POSIX (quelqu'un peut-il confirmer cela?).
Il est utilisé par Cygwin, qui est également une couche de type POSIX pour Microsoft Windows. Existe-t-il des systèmes autres que Microsoft Windows? OpenVMS?
Sur //foo/bar
quels systèmes est spécial, à quoi sert-il? //host/path
pour l'accès aux systèmes de fichiers réseau? Systèmes de fichiers virtuels?
Certaines applications fonctionnant sous Unix-like - si ce n’est pas l’API du système - traitent-elles //foo/bar
spécialement les chemins (dans des contextes où elles le traitent autrement /foo/bar
comme chemin du système de fichiers)?
Modifier , je l' ai depuis posé une question sur la liste de diffusion groupe austin sur l'origine de la //foo/bar
manipulation dans les spécifications, et la discussion est une lecture intéressante (d'un point d'archéologie de vue au moins).
la source
ls -ld ///
afficherait également///
,ls
juste affiche le fichier , il est dit à afficher comme il a été donné. Je recherche des systèmes ou des applications qui traitent // foo / var spécialement (pas comme un chemin sur le système de fichiers) comme 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.
... pas exactement unix, bien que ^^).file://
:, semblable àhttp://
, etc. Sur chrome ici au travail un chemin Windows UNC que je suis ouvert est maintenantfile:////$MACHINE/$SHARENAME/index.html
(bien que pour une raison quelconque il comprend égalementfile://$MACHINE/...
)Réponses:
Ceci est une compilation et un index des réponses données jusqu'à présent. Cet article est un wiki de communauté , il peut être édité par n'importe qui ayant plus de 100 ans de réputation et personne n'en tire de réputation. N'hésitez pas à poster votre propre réponse et à ajouter un lien vers celle-ci (ou attendez que je le fasse). Idéalement, cette réponse devrait simplement être un résumé (avec des entrées courtes tandis que les réponses individuelles auraient les détails).
Systèmes actuellement activement maintenus:
//host/file
les chemins de partage de fichiers en réseau.//pathname
demandes adressées aux ensembles de données MVS , et non aux fichiers réseau. Exemple .Systèmes défunt
@BinaryZebra Apollo Domain / OS (confirmé). Également mentionné au Description officielle UNC (Universal Naming Convention) comme possible origine de
//host/path
notations ( voir aussi page 2-15).Selon Donn Terry , c’est HP (qui a acquis Apollo Computers) qui a plaidé en faveur de l’inclusion de cette disposition dans la spécification POSIX pour Domain / OS.
@jillagre Tektronix Utek ( corroborée ), où
//host/path
est un chemin sur un système de fichiers distribué .//123/path
/path
//host/path
(abandonné dans SVR4).//host/path
.Applications qui traitent
//foo/bar
spécialement pour les chemins//depot/A/B/C/D
fait référence à un chemin dans un dépôt .//
préfixe pour les chemins relatifs (au mélange associé au bloc de données) .la source
//
espace de noms a été proposée par certains développeurs du noyau Linux pour les installations de métadonnées de Reiser4, mais je ne pense pas que cette proposition ait gagné du terrain au sein de Namesys et qu'elle n'ait jamais été mise en œuvre.Je suis au courant de Perforce qui utilise
//depot/A/B/C/D
Paths pour se référer au Dépôt. Perforce prend également en charge les//Client/C/D
chemins, lorsque le client pointe vers//depot/A/B/
. Ici, le système de fichiers local peut ne pas avoir ces chemins.p4 filelog //depot/A/B/C/D
montrera l'historique de ce fichier, même s'il n'y a pas de fichier/depot/A/B/C/D
.p4 filelog C/D
affichera également l'historique de ce fichier, s'il est exécuté à partir du répertoire approprié.Référence: https://www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html
la source
Il y a plusieurs décennies, Tektronix Utek (Unix basé sur BSD 4.2, d'abord sur les processeurs National Semiconductors 32016, puis sur Motorola 68020 ) fournissait quelque chose appelé DFS (système de fichiers distribué) sous lequel
//foo/bar
se référait au/bar
fichier sur lefoo
serveur DFS. Il a ensuite été rendu obsolète par NFS de Sun.Malheureusement, je n'ai pas encore fait référence à cela, mais je pourrais éventuellement trouver de la documentation Utek dans ma cave et mettre à jour cette réponse.
la source
find
par exemple, de traverser le point de montage. L'auteur y exclut explicitement//foo/bar
(ou la connexion avec Newcastle/../foo/bar
)En suivant l'exemple de cette réponse . Et en lisant la page 2-15 du manuel de Bitsavers (merci @grawity ).
Il existe également un ancien manuel de "First Printing: July, 1985". À la page 1-4:
Nous avons donc confirmation que Domain / OS d’Apollo est utilisé
//
comme racine du réseau.la source
Une autre application: Blender traite un interligne
//
comme une référence au répertoire du projet (le répertoire dans lequel le.blend
fichier est enregistré). Voici la page de manuel pertinente .Ceci est également vrai pour les systèmes d’exploitation autres que Unix (Windows).
la source
Le projet ReactOS - qui est une implémentation libre et à source ouverte du noyau NT et des API associées - a apparemment entrepris de mettre également en œuvre son propre sous-système POSIX de type Interix (bien que le sous-système OS / 2 d'origine de MS soit également mentionné dans le contexte , aucune mention n'est fournie. est constitué d’un analogue de ReactOS) .
Bien que les efforts déployés jusqu’à présent aient été modestes ,
fork()
c’est apparemment une réalité. Voici un extrait de la page de projet du sous-système, comme indiqué dans les questions en suspens :Je ne suis pas certain de la pertinence de cette mesure car je ne sais pas dans quelle mesure il a été mis en œuvre, mais j’ai pensé que c’était une description intéressante du problème.
la source
//foo/bar
manipulation. Je n'ai pas trouvé de preuve solide que le sous-système Windows POSIX ou Interix les ait gérés jusqu'à présent.lsacl
commande MKS est spécifiée pour comprendre\\machinename\driveletter:\path
alors que saregistry
commande était spécifiée pour comprendre cette forme ou éventuellement de//
toute façon. Comme le kit MKS était le prédécesseur d'Interix et que MS a livré les versions 1/2, je pense qu'Interix doit avoir accepté la syntaxe compatible pour une chose aussi fondamentale.Dans les années 1980, SEL / Gould disposait d’un système d’exploitation Unix appelé UTX-32, équivalent à celui de Solaris; c'est-à-dire, chemin d'accès à distance sur l'hôte . Je ne trouve aucune documentation à ce sujet. Je ne sais donc pas s'il s'agissait d'une évolution RFS ou parallèle (ou si AT & T
//host/path
/net/host/path
path
host
a voléacquis de Gould).la source
//host/path
dans UTX-32), par hasard?J'ai un vague souvenir que la
//host/path
notation a été utilisée sur AT & T SysV.3 dans le cadre de son implémentation RFS Remote File Sharing . Cela a finalement été abandonné à la sortie de SysV.4 au profit du NFS, plus simple mais plus populaire, de Sun Microsystems.Cependant, je ne trouve aucune référence concrète à la syntaxe, et la documentation que je viens de passer en revue semble indiquer que l'idée de l'utilisateur spécifiant explicitement un nom d'hôte distant se serait opposée au principe de conception d'indépendance d'emplacement.
Références 1. RFS Architectural overview
la source
//host/path
. Cela semble impliquer que les systèmes de fichiers réseau doivent être montés explicitement.Posix déclare dans la justification de la Résolution A.4.12 Pathname Les paragraphes 9 et 10:
Cela semble confirmer que cela
//
signifie «racine du réseau», ou du moins que c’était l’idée lors de l’inclusion de la règle dans POSIX.Les règles suivent pour supprimer toute signification de
//
au milieu d'un chemin pour un nom de chemin/
commencé:Bien sûr, un nom de chemin
//
commencé peut étendre ou changer l'utilisation d'//
un nom de chemin (pas au début). POSIX.1 le permet. Ce dernier confirme que les seuls//
autorisés sont au début d'un chemin d'accès.la source