Digamos que você tenha diretórios /dir1
e /dir2/linked
, onde o último é um link simbólico para o primeiro.
Quando você cd
para linked
e pwd
, você obter o resultado /dir2/linked
. Se você então cd ..
, você será colocado /dir2
. Esse comportamento é consistente com o conceito de você estar /dir2/linked
antes. No entanto, pelo que entendi, o diretório pai ( ..
) de qualquer diretório é armazenado no inode do diretório (ou seja: fisicamente no disco). Obviamente, como /dir2/linked
é realmente /dir1
, o diretório pai no inode deve ser/
Para complicar ainda mais, enquanto dentro /dir2/linked
, as saídas ls ..
e cd .. ; ls .
são diferentes! Parece cd
honrar o caminho simbolizado, enquanto ls
honra o caminho "físico". Conforme mencionado nesta pergunta , existe cd -P
para este caso de uso.
man pwd
menciona diretórios de trabalho "físicos" e "lógicos", mas ainda tenho algumas perguntas neste momento:
- Esse comportamento é sempre fornecido pela
PWD
variável de ambiente, conforme mencionado emman pwd
? - Por que usar
cd
como padrão els
ter comportamentos diferentes, se ambos são comandos do shell (ou seja: não são programas)? - O programa típico (não o comando shell) usa em
PWD
vez do caminho físico? Sei que depende da implementação, mas existe alguma regra de ouro?