¿Qué significa // en un camino?

9

Estaba trabajando en mi terminal, cuando escribí mal mientras cdrooteaba ( /). Accidentalmente, escribí //y llegué a la terminal:

root@weblocalhost://#

Cuando escribo pwd, obtengo respuesta, //pero cuando ls -sescribo tengo la misma lista que en el /directorio.

Cuando escribe más de 2, es decir ///, obtiene:

root@weblocalhost:/#

Siempre 1 /excepto 2. ¿Hay alguna diferencia y para qué sirve //?

Dimitris Theodoridis
fuente

Respuestas:

8

/ es equivalente a //

De la especificación POSIX (énfasis agregado):

3.267 Nombre de ruta

Una cadena que se usa para identificar un archivo. En el contexto de POSIX.1-2008, un nombre de ruta puede estar limitado a {PATH_MAX} bytes, incluido el byte nulo de terminación. Tiene <slash> caracteres iniciales opcionales , seguidos de cero o más nombres de archivo separados por <slash> caracteres. Un nombre de ruta puede contener opcionalmente uno o más <slash>caracteres finales . Se <slash>considera que varios caracteres sucesivos son iguales a uno <slash>, excepto en el caso de exactamente dos <slash>personajes principales .

Y :

4.12 Resolución de nombre de ruta

...
Un nombre de ruta que consta de un solo <slash>se resolverá en el directorio raíz del proceso. Un nombre de ruta nulo no se resolverá con éxito. Si un nombre de ruta comienza con dos <slash>caracteres sucesivos , el primer componente que sigue a los <slash>caracteres iniciales se puede interpretar de una manera definida por la implementación, aunque más de dos <slash>caracteres iniciales se tratarán como un solo <slash> carácter.

Para una buena discusión de las excepciones (cygwin y directorios) vea: ¿Cómo maneja Linux los múltiples separadores de ruta consecutivos (/ home //// nombre de usuario /// archivo)?

Pantera
fuente
4

Puede agregar varias barras diagonales a un directorio y no cambiará nada.

Por ejemplo, estos tres comandos hacen lo mismo:
cd /home
cd /home/
cd /home//

Después de cualquiera de estos, mi directorio de trabajo actual se establece en / home (consultar con pwd).

Yo supongo que usted tiene su pronta configurado para hacer algo inteligente y que se ejecutó en un comportamiento inesperado. ¿Qué obtienes cuando tú echo $PS1?

Enlace a un comentario en https://unix.stackexchange.com/ que puede explicarlo.

Hennes
fuente
Mi PS1 en bash en OSX es "\ h: \ W \ u \ $" y también tengo este comportamiento extraño. / y /// y //// y ///// se muestran como /, pero el caso especial de dos barras diagonales se muestra como dos barras diagonales.
Sparr
Obtuve el \ u @ \ h: \ w (<b> u </b> ser en <b> h </b> ost, <b> w </b> dir orking) en Ubuntu 12.10 pero no puedo reproducir el problema
Hennes
no, siempre obtengo // cuando verifico pwd en cualquier caso. para echo $ PS1 obtengo: \ [\ e] 0; \ u @ \ h: \ w \ a \] $ {debian_chroot: + ($ debian_chroot)} \ u @ \ h: \ w \ $
Dimitris Theodoridis
Acabo de configurar manualmente mi PS1 y no puedo reproducirlo con dos barras. Extraño. No con 1, 3 o 4. Solo con 2. No puedo explicar esto.
Hennes
Tal vez este comentario de unix.stackexchange es la respuesta: creo que las API de compatibilidad POSIX de Windows también tratarán // remoto / ... igual que el formato de ruta UNC \\ remoto \ .... - Stephen P ene 20 '11 a las 0:39
Hennes