Digamos que tiene directorios /dir1
y /dir2/linked
, donde este último es un enlace simbólico al primero.
Cuando cd
a linked
y pwd
, se obtiene la salida /dir2/linked
. Si entonces cd ..
, te pondrán /dir2
. Este comportamiento es consistente con el concepto de estar en el /dir2/linked
pasado. Sin embargo, según tengo entendido, el directorio padre ( ..
) de cualquier directorio se almacena en el inodo del directorio (es decir, físicamente en el disco). Obviamente, como /dir2/linked
es realmente /dir1
, el directorio padre en el inodo debe ser/
Para complicar aún más las cosas, dentro /dir2/linked
, las salidas de ls ..
y cd .. ; ls .
son diferentes. Parece que cd
honra la ruta de enlace simbólico, mientras que ls
honra la ruta "física". Sin embargo, como se menciona en esta pregunta , hay cd -P
para este caso de uso.
man pwd
menciona directorios de trabajo "físicos" y "lógicos", pero todavía tengo algunas preguntas en este punto:
- ¿Es este comportamiento siempre proporcionado por la
PWD
variable de entorno, como se menciona enman pwd
? - ¿Por qué usar valores predeterminados
cd
yls
tener comportamientos diferentes, si ambos son comandos de shell (es decir, no programas)? - ¿ Utiliza el programa típico (no el comando de shell) en
PWD
lugar de la ruta física? Me doy cuenta de que depende de la implementación, pero ¿hay alguna regla general?