GNU/Linux >> Tutoriales Linux >  >> Linux

Unix, ¿diferencia entre la ruta que comienza con '/' y '//'?

Esta pregunta ya tiene respuestas aquí :¿Cómo maneja Linux múltiples separadores de ruta consecutivos (/home////username///file)?

(6 respuestas)
Cerrado hace 3 años.

En Unix/Linux, cualquier cantidad de barras diagonales consecutivas en una ruta generalmente es equivalente a una sola barra diagonal. ej.

$ cd /home/shum
$ pwd
/home/shum
$ cd /home//shum
$ pwd
/home/shum
$ cd /home///shum
$ pwd
/home/shum

Sin embargo, por alguna razón, dos barras diagonales al comienzo de una ruta absoluta se tratan de manera especial. ej.

$ cd ////home
$ pwd
/home
$ cd ///
$ pwd
/
$ cd //
$ pwd
//
$ cd home//shum
$ pwd
//home/shum

Cualquier otro número de barras diagonales consecutivas en cualquier otro lugar de un parche se trunca, pero permanecerán dos al principio, incluso si luego navega por el sistema de archivos en relación con él.

¿Por qué es esto? ¿Hay alguna diferencia entre /… y //… ?

Respuesta aceptada:

En su mayor parte, las barras inclinadas repetidas en una ruta equivalen a una sola barra. Este comportamiento es exigido por POSIX y la mayoría de las aplicaciones hacen lo mismo. La excepción es que "un nombre de ruta que comienza con dos barras oblicuas sucesivas puede interpretarse de una manera definida por la implementación" (pero ///foo es equivalente a /foo ).

La mayoría de los unices no hacen nada especial con dos barras iniciales. Linux, en particular, no lo hace. Cygwin hace://hostname/path accede a una unidad de red (SMB).

Lo que estás viendo no es, de hecho, Linux haciendo nada especial con // :es el seguimiento del directorio actual de bash. Comparar:

$ bash -c 'cd //; pwd'
//
$ bash -c 'cd //; /bin/pwd'
/

Bash está tomando la precaución de que el sistema operativo podría estar tratando // especialmente y mantenerlo. Dash hace lo mismo. Ksh y zsh no cuando se ejecutan en Linux, supongo (no lo he comprobado) tienen una configuración de tiempo de compilación.


Linux
  1. Diferencia entre /bin/falso y /sbin/nologin

  2. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  3. ¿Diferencia entre 2>&-, 2>/dev/null, |&, &>/dev/null y>/dev/null 2>&1?

  4. ¿La diferencia entre /opt y /usr/local?

  5. ¿Diferencia entre /var/log/messages, /var/log/syslog y /var/log/kern.log?

¿Cuál es la diferencia entre Linux y Unix?

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

Diferencia entre /etc/crontab y crontab -e

Diferencia entre /bin y /usr/bin

¿Cuál es la diferencia entre /tmp y /run?

Diferencia entre /etc/hosts y /etc/resolv.conf