Wenn ich pwd
es bemerke, werden die Symlinks verwendet, die ich verwendet habe, um in das aktuelle Verzeichnis zu gelangen. Kann ich mir das "echte" Verzeichnis anzeigen lassen, in dem ich mich befinde, dh den Pfad vom Stammverzeichnis zu meinem aktuellen Verzeichnis, ohne dass Symlinks verwendet werden?
54
man pwd
in die Shell tippen, um die Optionen für diesen Befehl herauszufinden.Die eingebaute pwd-Shell verwendet den Pfad, den die Shell verfolgt, wenn Sie
cd
(und speichert$PWD
). Wenn Sie also einen Symlink zu einem komplexen (tiefen) Pfad haben, erfahren Sie, was Sie eingegeben haben, um in dieses Verzeichnis anstatt in den tatsächlichen Pfad zu wechseln. Dies geschieht, um Ihnen die meiste Zeit das zu geben, was Sie wollen./bin/pwd
Verwendet dengetcwd
Systemaufruf (der heutzutage ein Bibliotheksaufruf ist, Reading/proc/self/cwd
), der den kanonischen Pfad für das aktuelle Verzeichnis zurückgibt, ohne alle Symlink-Traversen.Wie Steven D betonte,
pwd
hat die-P
Option zu ignorieren$PWD
. Es hat auch die-L
Möglichkeit, den Inhalt von zurückzugeben$PWD
. Die Manpage fürpwd
gibt nicht an, welche Option standardmäßig verwendet wird, aber erfahrungsgemäß ist die obige Beschreibung korrekt (Shellpwd
vs./bin/pwd
). Allerdings solltest du dich wohl nicht darauf verlassen und einfach nutzenpwd -P
.quelle
/bin/pwd
GNU ausgeführt wird,pwd
wenn POSIXLY_CORRECT nicht festgelegt ist. Auf POSIX-Systemen, auf denen sich daspwd
befindet/bin
./bin/pwd
verwendet $ PWD und kann Pfade mit Symlinks zurückgeben. GNU pwd verhält sich in dieser POSIX-Weise, wenn es eine POSIXLY_CORRECT-Variable in seiner Umgebung findet.