Résolution des liens symboliques (pwd)

32

Dis que je fais ce qui suit:

cd /some/path
ln -s /target/path symbolic_name

Si alors:

cd /some/path
cd symbolic_name
pwd

Je reçois:

/some/path/symblic_name

et pas:

/target/path

Existe-t-il un moyen pour que le shell "résolve complètement" un lien symbolique (ie mise à jour de CWD, etc.), comme si je l'avais fait directement:

cd /target/path

?

J'ai besoin d'exécuter des programmes qui semblent "conscients" ou "sensibles" sur la façon dont j'arrive à mon chemin cible, et je voudrais qu'ils pensent que je suis arrivé sur le chemin cible comme s'il l'avait fait cd /target/pathdirectement.

Amelio Vazquez-Reina
la source
7
Lié à cette question . Vous pouvez faire pwd -Pou alias pwd='pwd -P'aussi cd -Paller sur le chemin physique au lieu du lien symbolique.
Martín Canaval
@ MartínCanaval Merci; c'est ce que je cherchais!
Ryan

Réponses:

35

Votre shell a une fonction intégrée pwd, qui essaie d'être «intelligente». Après avoir fait un cdlien symbolique, la pwdcontrefaçon interne de la sortie comme si vous aviez déplacé vers un vrai répertoire.

Passez l' -Poption à pwd, c'est- à -dire exécutez pwd -P. L' -Poption (pour «physique») indique de pwdne faire aucun suivi de lien symbolique et d'afficher le «vrai» chemin vers le répertoire.

Alternativement, il devrait également y avoir un vrai binaire pwd, qui ne fait pas (et n'est même pas capable de faire) ce genre de magie. Utilisez simplement cette explicité binaire:

$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
$ mkdir a
$ ln -s a b
$ cd b
$ pwd
/home/michas/b
$ /bin/pwd
/home/michas/a
michas
la source
12

Essayez cd -P <symlink_dirname>.

tim@ls:~$ mkdir a
tim@ls:~$ ln -s a b

tim@ls:~$ cd b
tim@ls:~/b$ pwd
/home/tim/b

tim@ls:~/b$ cd ..
tim@ls:~$ cd -P b
tim@ls:~/a$ pwd
/home/tim/a

Vous pouvez également utiliser set -o physicalpour que ce comportement persiste pendant toute la durée de vie du shell en cours d'exécution.

Consultez https://stackoverflow.com/questions/10456784/behavior-of-cd-bash-on-symbolic-links pour d'autres bonnes informations.

livingstaccato
la source