Digamos que você tenha diretórios /dir1e /dir2/linked, onde o último é um link simbólico para o primeiro.
Quando você cdpara linkede 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/linkedantes. 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 cdhonrar o caminho simbolizado, enquanto lshonra o caminho "físico". Conforme mencionado nesta pergunta , existe cd -Ppara 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
PWDvariável de ambiente, conforme mencionado emman pwd? - Por que usar
cdcomo padrão elster 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
PWDvez do caminho físico? Sei que depende da implementação, mas existe alguma regra de ouro?