A lo largo de la especificación POSIX, hay disposiciones ( 1 , 2 , 3 ...) para permitir que las implementaciones traten una ruta que comienza con dos /
especialmente.
Una aplicación POSIX (una aplicación escrita en la especificación POSIX para ser portátil a todos los sistemas compatibles con POSIX) no puede asumir que //foo/bar
es lo mismo que /foo/bar
(aunque sí puede suponer que ///foo/bar
es lo mismo /foo/bar
).
¿Cuáles son esos sistemas POSIX (históricos y aún mantenidos) que tratan //foo
especialmente? Creí (ahora se ha demostrado que estoy equivocado ) que la provisión POSIX fue impulsada por Microsoft para su variante Unix (XENIX) y posiblemente para la capa POSIX de Windows (¿alguien puede confirmar eso?).
Lo usa Cygwin, que también es una capa similar a POSIX para Microsoft Windows. ¿Hay algún sistema que no sea Microsoft Windows? OpenVMS?
En sistemas donde //foo/bar
es especial, ¿para qué se utiliza? //host/path
para acceso a sistemas de archivos de red? Sistemas de archivos virtuales?
¿Algunas aplicaciones que se ejecutan en Me gusta de Unix, si no es en la API del sistema, tratan las //foo/bar
rutas especialmente (en contextos en los que de otro modo se tratan /foo/bar
como la ruta en el sistema de archivos)?
Editar , desde entonces hice una pregunta en la lista de correo del grupo Austin sobre el origen del //foo/bar
manejo en la especificación, y la discusión es una lectura interesante (al menos desde el punto de vista de la arqueología).
fuente
ls -ld ///
también se mostraría///
,ls
solo muestra el archivo que se le indica que muestre tal como se le dio. Estoy buscando sistemas o aplicaciones que traten // foo / var especialmente (no como una ruta en el sistema de archivos) como lo hace 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.
... no exactamente unix, aunque ^^).file://
por igualhttp://
y tal. En Chrome aquí en el trabajo, una ruta UNC de Windows que he abierto ahora esfile:////$MACHINE/$SHARENAME/index.html
(aunque por alguna razón también lo comprendefile://$MACHINE/...
)Respuestas:
Esta es una compilación e índice de las respuestas dadas hasta ahora. Esta publicación es wiki de la comunidad , puede ser editada por cualquier persona con más de 100 reputación y nadie obtiene reputación de ella. Siéntase libre de publicar su propia respuesta y agregar un enlace aquí (o espere a que lo haga). Idealmente, esta respuesta debería ser solo un resumen (con entradas cortas, mientras que otras respuestas individuales tendrían los detalles).
Sistemas actualmente mantenidos activamente:
//host/file
rutas de intercambio de archivos de red.//pathname
solicitudes a conjuntos de datos MVS , no a archivos de red. Ejemplo .Sistemas difuntos
@BinaryZebra Apollo Domain / OS (confirmado). También se menciona en la Descripción oficial UNC (Convención de nomenclatura universal) como el posible origen de las
//host/path
anotaciones ( ver también , página 2-15).Según Donn Terry , fue HP (que adquirió las computadoras Apollo) la que impulsó la inclusión de esa disposición en la especificación POSIX para el dominio / sistema operativo.
@jillagre Tektronix Utek ( corroborado ), donde
//host/path
hay una ruta en un sistema de archivos distribuido .//123/path
/path
//host/path
en (descontinuado en SVR4) RFS Remote File Sharing system.//host/path
.Aplicaciones que tratan
//foo/bar
especialmente para caminos//depot/A/B/C/D
refiere a una ruta en un depósito .//
prefijo para rutas relativas (a la combinación asociada con el bloque de datos) .fuente
//
espacio de nombres fue propuesto por algunos desarrolladores de kernel de Linux para las instalaciones de metadatos de Reiser4, pero no creo que esta propuesta haya ganado fuerza dentro de Namesys, ni fue implementada.Soy consciente de Perforce que utiliza
//depot/A/B/C/D
rutas para referirse al Depósito. Perforce también admite//Client/C/D
rutas, cuando el cliente señala//depot/A/B/
. Aquí, el FileSystem local puede no tener estas Rutas.p4 filelog //depot/A/B/C/D
mostrará el historial de ese archivo, aunque no haya ningún archivo/depot/A/B/C/D
.p4 filelog C/D
también mostrará el historial de ese archivo, si se ejecuta desde el Directorio apropiado.Referencia: https://www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html
fuente
Hace varias décadas, Tektronix Utek (Unix basado en BSD 4.2, primero en CPU National Semiconductors 32016 y luego Motorola 68020 s) estaba proporcionando algo llamado DFS (sistema de archivos distribuido) bajo el cual
//foo/bar
se refería al/bar
archivo en elfoo
servidor dfs. Más tarde fue obsoleto por NFS de Sun.Desafortunadamente, aún no he hecho referencia para respaldar eso, pero eventualmente podría encontrar documentación de Utek en mi bodega y actualizar esta respuesta.
fuente
find
por ejemplo, atravesar el punto de montaje. El autor descarta explícitamente//foo/bar
(o la conexión de Newcastle/../foo/bar
) allíSiguiendo el ejemplo de esta respuesta . Y leyendo la página 2-15 del manual de Bitsavers (gracias @grawity ).
También hay un manual más antiguo de "Primera impresión: julio de 1985". En la página 1-4:
Entonces, tenemos confirmación de que el dominio / sistema operativo de Apollo se usó
//
para la raíz de la red.fuente
Otra aplicación: Blender trata una guía
//
como una referencia al directorio del proyecto (el directorio en el.blend
que se guarda el archivo). Aquí está la página del manual relevante .Esto también es cierto para los sistemas operativos que no son similares a Unix (es decir, Windows).
fuente
El proyecto ReactOS , que es una implementación gratuita y de código abierto del kernel NT y API relacionadas, aparentemente se ha comprometido a implementar también su propio subsistema POSIX similar a Interix (aunque el subsistema OS / 2 original de MS también se menciona en contexto , sin mencionar está hecho de un análogo ReactOS) .
Aunque los esfuerzos hasta ahora han sido pequeños ,
fork()
aparentemente es una realidad. Aquí hay un extracto de la página del proyecto del subsistema, como se detalla en los números abiertos :No estoy seguro de cómo eso califica, ya que no estoy seguro de cuánto se ha implementado, pero pensé que era una descripción útil e interesante del problema.
fuente
//foo/bar
manejo. No he encontrado pruebas sólidas de que el subsistema POSIX de Windows o Interix los hayan manejado hasta ahora.lsacl
comando MKS debe comprender\\machinename\driveletter:\path
mientras que suregistry
comando debe comprender esa forma u opcionalmente de//
cualquier manera. Como el kit MKS fue el predecesor de Interix y fue lo que MS envió para las versiones 1/2, creo que Interix debe haber aceptado una sintaxis compatible para algo tan básico.En la década de 1980, SEL / Gould tenía un sistema operativo Unix llamado UTX-32 en el que era equivalente a Solaris; es decir, ruta de acceso remoto en el host . No puedo encontrar ninguna documentación al respecto, así que no sé si fue RFS o evolución paralela (o si AT&T
//host/path
/net/host/path
path
host
robólo adquirí de Gould).fuente
//host/path
en UTX-32), por casualidad?Tengo un vago recuerdo de que la
//host/path
notación se usó en AT&T SysV.3 como parte de su implementación de RFS Remote File Sharing . Finalmente, esto se abandonó cuando SysV.4 se lanzó a favor del NFS más simple pero más popular de Sun Microsystems.Sin embargo, no puedo encontrar ninguna referencia concreta a la sintaxis, y la documentación que he revisado ahora parece indicar que la idea del usuario que especifica explícitamente un nombre de host remoto se habría opuesto al principio de diseño de la independencia de la ubicación.
Referencias 1. Descripción arquitectónica de RFS
fuente
//host/path
. Parece implicar que los sistemas de archivos de red deben montarse explícitamente.De POSIX establece en el Fundamento de la Resolución del nombre de ruta A.4.12 Los párrafos 9 y 10:
Esto parece confirmar que
//
significa "raíz de red", o al menos esa fue la idea cuando la regla se incluyó en POSIX.Siguen las reglas para eliminar cualquier significado
//
en el medio de una ruta para un nombre de ruta/
iniciado:Por supuesto, un nombre de
//
ruta iniciado puede expandir o cambiar el uso de//
dentro de un nombre de ruta (no al principio). POSIX.1 permite esto. Esto último confirma que los únicos//
permitidos están al comienzo de un Nombre de ruta.fuente