Ich habe einen Softlink ( ln -s 1 2
) zu einem Verzeichnis innerhalb des test
Verzeichnisses erstellt, den Softlink ( cd 2
) geöffnet und den aktuellen Pfad mit angezeigt pwd
. Der angezeigte Pfad war ~/test/2
und nicht ~/test/1
.
Bei einem Betriebssystem wie Windows ist das anders. Die Verknüpfung bringt uns zum eigentlichen Verzeichnis. Ich bin ein bisschen verwirrt, wie dieser Softlink unter Linux funktioniert. Ist es nicht eine Abkürzung wie in Windows
? Warum ist der Weg nicht ~/test/1
?
$ mkdir test
$ cd test
$ mkdir 1
$ ln -s 1 2
$ cd 2
$ pwd
/home/dazz/test/2
shell
symlink
cd-command
DScript
quelle
quelle
Antworten:
Dies ist eine Funktion der Shell, die sich daran erinnert, wie Sie zu Ihrem Standort gekommen sind.
Wenn Sie
realpath
installiert haben, können Sie Folgendes tun:Und das fehlt, wenn Sie Python haben:
oder readlink (von coreutils):
oder
/bin/pwd
(nicht die eingebaute Shellpwd
):quelle
ls -l /proc/$$/cwd
nutzt die/proc
Dateisystemschnittstelle des Kernels .pwd -P
, dass Sie den physischen anstelle des logischen Pfads zum aktuellen Verzeichnis drucken.Kontrast
pwd
und/bin/pwd
.pwd
, ein in vielen Shells integrierter Befehl, gibt an, wo sich Ihre Shell befindet (und behandelt daher Symlinks als "weiche Links", als wären sie echte Verzeichnisse./bin/pwd
ist ein externes Programm, das Ihnen sagt, wo Sie wirklich sind, wenn nötig, indem es den Dateisystembaum bis zu durchquert/
. Symlinks werden nicht berücksichtigt, da diese beim Durchlaufen nach oben nicht vorhanden sind..
quelle
Andere Antworten haben sich mit denen
/bin/pwd
der Shell befasstbuiltin pwd
.Wenn Sie Symlinks im von Ihnen erwähnten Windows-Stil folgen möchten, verwenden Sie
cd -P
: Dadurch wird die PWD-Variable entsprechend geändert.Wenn Sie
-P
standardmäßig verwenden möchten , können Sie diese Zeile zu Ihrem.bashrc
oder hinzufügen.zshrc
:Andere Schalen können variieren.
quelle