Angenommen, Sie haben Verzeichnisse /dir1
und /dir2/linked
, wobei letzteres ein Symlink zu ersteren ist.
Wenn Sie cd
zu linked
und pwd
, erhalten Sie die Ausgabe /dir2/linked
. Wenn Sie dann cd ..
, werden Sie angezogen /dir2
. Dieses Verhalten steht im Einklang mit dem Konzept, dass Sie sich /dir2/linked
zuvor befinden. Soweit ich weiß, wird das übergeordnete Verzeichnis ( ..
) eines Verzeichnisses im Verzeichnis inode gespeichert (dh physisch auf der Festplatte). Da dies /dir2/linked
wirklich /dir1
der Fall ist , muss das übergeordnete Verzeichnis auf dem Inode offensichtlich sein/
Um die Sache weiter zu verkomplizieren, /dir2/linked
sind die Ausgänge von ls ..
und cd .. ; ls .
im Inneren unterschiedlich! Es scheint, als würde cd
der symlinked Pfad geehrt, während ls
der "physische" Pfad gewürdigt wird. Wie in dieser Frage erwähnt , gibt es cd -P
für diesen Anwendungsfall jedoch.
man pwd
erwähnt "physische" und "logische" Arbeitsverzeichnisse, aber ich habe an dieser Stelle noch einige Fragen:
- Wird dieses Verhalten immer von der
PWD
Umgebungsvariablen bereitgestellt , wie in erwähntman pwd
? - Warum standardmäßig
cd
undls
unterschiedlich verhalten, wenn beide Shell-Befehle sind (dh keine Programme)? - Verwendet das typische Programm (kein Shell-Befehl)
PWD
anstelle des physischen Pfads? Mir ist klar, dass es an der Implementierung liegt, aber gibt es eine Faustregel?