Estoy tratando de entender la naturaleza de ..
(doble punto). Parece apuntar a diferentes objetivos según cómo accedas a él.
Ejemplo:-
/outer/
middle/
inner/
inner --> ./middle/inner/
Ahora, /outer/middle/inner/..
conduce a /outer/middle/
, pero si accedo a través del enlace simbólico, /outer/inner/..
conduce a /outer/
. Parece que hay dos diferentes ..
aquí.
¿Qué es ..
exactamente? enlace simbólico? enlace duro? ¿O se genera dinámicamente dependiendo de la ruta cuando se accede al directorio? O tal vez mi comprensión de los enlaces simbólicos es incorrecta.
Editar:
Otra observación relacionada
/outer/
middle/
file
inner/
f --> ./../file
inner --> ./middle/inner/
Ahora si trato de acceder al archivo a través de /outer/inner/f
él funciona. Pero no debería, ya /outer/inner/../file
que no apunta a un archivo. el archivo está adentro /outer/middle/inner/..
. ¿Esto parece contradecir el comportamiento de arriba?
fuente
Respuestas:
..
es un enlace fijo al directorio padre que se crea como parte de la entrada del directorio.Si publica
ls -ail
en cada uno de estos directorios, debería ver que todas las siguientes entradas tienen el mismoinode
(primer campo) y el recuento de enlaces duros (tercer campo):..
cuando se ejecutals -ail
eninner
.
cuando se ejecutals -ail
enmiddle
middle
cuando se ejecutals -ail
enouter
Hay una
..
entrada eninner
. Si su directorio de trabajo actual esouter
, debería ver los mismos resultados (una lista de directorios demiddle
)ls -al inner/..
ls -al middle/inner/..
La única situación en la que "el acceso"
..
a través del enlace simbólico debe proporcionar un comportamiento diferente es sicd
eninner
el uso del enlace simbólico, para que su lógica de directorio de trabajo (pwd -L
) difiere de su físico directorio de trabajo (pwd -P
). En este caso,cd ..
lo llevará de vuelta aouter
no porque haya una..
entrada diferente , sino porque su shell está realizando un seguimiento de su directorio de trabajo lógico y le muestra un nivel, en lugar de hacer referencia a la..
entrada realinner
.Esta es una conveniencia proporcionada, por ejemplo,
bash
como parte delcd
comando incorporado . Puede anular esto pidiéndole que cambie a la..
entrada real condonde
-P
indicacd
(como en el casopwd
anterior) que use la ruta física.fuente
cd
para verificar. Entonces, corrígeme si estoy equivocado,..
siempre apunta al padre físico, si usa un enlace simbólico..
, se dirigirá al padre (físico) real. La confusión ocurre solo alcd
ingresar en directorios.ls -lai
te muestra que/..
es el directorio raíz en sí, nuevamente (también conocido como/.
o/
). A menos que el sistema de archivos esté roto, no debería haber otro caso donde. == ..
; incluso cuando se monta un fs en algún lugar, obtiene el correcto..
del padre (temporal) (por lo que hay algo de magia allí,..
no es solo una entrada simple y estática en la tabla del sistema de archivos).