¿Qué es el directorio "//"?

12

En varias máquinas Linux puedes

cd /

y

cd //

El shell dirá que el directorio actual es '/' o '//' después de usar el comando correspondiente.

Entonces la pregunta es: ¿Cuál es la diferencia entre '/' y '//', y si la respuesta es 'no hay diferencia', entonces por qué '//' se muestra de manera diferente a '/'?

Por cierto

cd ///
cd ////
cd /////

Todos los resultados en el shell que dice que el directorio actual es '/'

Aquí hay una sesión de ejemplo:

[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$ cd //
[user@host //]$ cd /
[user@host /]$
sylvanaar
fuente
2
Esto parece ser una anomalía específica de bash. Si lo intentas cd //en csh o zsh y luego pwdse mostrará solo '/'
Doug Harris
interesante - que arroja algo de luz sobre ello
sylvanaar
1
Para la comparación: cd //usr/binda "// usr / bin", pero cd /usr//binda "/ usr / bin" (en Bash).
Pausado hasta nuevo aviso.

Respuestas:

14

Preguntemos al hombre mismo (Chester Ramey):

E10) ¿Por qué 'cd //' deja $ PWD como '//'?

POSIX.2, en su descripción de 'cd', dice que tres o más barras inclinadas pueden reemplazarse con una barra oblicua al canonizar el directorio de trabajo actual.

Esto es, supongo, por compatibilidad histórica. Ciertas versiones de Unix, y los primeros sistemas de archivos de red, usaban rutas de la forma // nombre de host / ruta para acceder a 'ruta' en el servidor 'nombre de host'.

Pausado hasta nuevo aviso.
fuente
Respuesta mucho mejor que la (ya bastante buena) de John T.
innaM
9

No es un directorio real, es un problema específico con bash. Se hace referencia en The Linux Documentation Project .

John T
fuente
44
¿Por qué nadie lo ha arreglado? o tienen ellos?
sylvanaar