Digamos que tiene directorios /dir1y /dir2/linked, donde este último es un enlace simbólico al primero.
Cuando cda linkedy 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/linkedpasado. 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/linkedes 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 cdhonra la ruta de enlace simbólico, mientras que lshonra la ruta "física". Sin embargo, como se menciona en esta pregunta , hay cd -Ppara 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
PWDvariable de entorno, como se menciona enman pwd? - ¿Por qué usar valores predeterminados
cdylstener comportamientos diferentes, si ambos son comandos de shell (es decir, no programas)? - ¿ Utiliza el programa típico (no el comando de shell) en
PWDlugar de la ruta física? Me doy cuenta de que depende de la implementación, pero ¿hay alguna regla general?