Diciamo che hai delle directory /dir1e /dir2/linked, dove quest'ultima è un link simbolico alla prima.
Quando cda linkede pwd, si ottiene l'output /dir2/linked. Se poi cd .., sarai messo su /dir2. Questo comportamento è coerente con il concetto di essere dentro/dir2/linked prima. Tuttavia, a quanto ho capito, la directory principale ( ..) di qualsiasi directory è memorizzata nell'inode della directory (ovvero: fisicamente sul disco). Ovviamente, dato che /dir2/linkedè davvero /dir1, la directory principale sull'inode deve essere/
A complicare ulteriormente le cose, mentre all'interno /dir2/linked, le uscite di ls ..e cd .. ; ls .sono diverse! Sembra cdonorare il percorso simbolico, mentrels onora il percorso "fisico". Come accennato in questa domanda , c'è comunque cd -Pquesto caso d'uso.
man pwd menziona directory di lavoro "fisiche" e "logiche", ma a questo punto ho ancora alcune domande:
- Questo comportamento è sempre fornito dal
PWDvariabile d'ambiente, come indicato inman pwd? - Perché impostazione predefinita
cdelscomportamenti diversi, se sono entrambi comandi shell (ovvero: non programmi)? - Il programma tipico (non il comando shell) utilizza al
PWDposto del percorso fisico? Mi rendo conto che dipende dall'implementazione, ma c'è qualche regola empirica?