Angenommen, ich habe die Ordner ~/a/b in meinem Home-Ordner und der Ordner b enthält einen symbolischen Link auf '..' namens 'Symlink'. Dann führe ich die folgenden Aktionen in bash:Verhalten von cd/bash auf symbolische Links
[email protected]:~$ cd a/b/symlink
[email protected]:~/a/b/symlink$ pwd -P
/home/hm/a
[email protected]:~/a/b/symlink$ cd ..
[email protected]:~/a/b$ pwd -P
/home/hm/a/b
PWD -P druckt das aktuelle Arbeitsverzeichnis, dereferencing alle symbolischen Links. Warum ist das Arbeitsverzeichnis/home/hm/a/b am Ende, und nicht/home/hm?
FYI, können Sie 'gesetzt oder' set -P' dieses Verhalten dauerhaft zu machen: echte
..
, muss auchcd -P
verwenden Sie dann. – Kevin.. Ich sollte erwähnen, dass die Implementierung ist wahrscheinlich mehr im Einklang mit @ Geekosaur Beschreibung; Ich würde nicht erwarten, dass das Überschreiben von 'OLDPWD' mit Ihrem eigenen Wert das' cd ..' Verhalten beeinflussen würde. – sarnold
Ich stimme zu, dass OLDPWD hier eigentlich gar nichts macht. Ich testete es, indem ich eine Symlink-Kette drei Ebenen tief hinunterging und dann einige Male "cd .." machte. Es hat gut funktioniert. Wenn OLDPWD verwendet wurde, würde es nicht funktionieren. OLDPWD merkt sich nur ein Verzeichnis und konnte nicht verwendet werden, um mehr als ein Verzeichnis zurückzugehen. Daher wird OLDPWD nicht verwendet. –