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/path
directement.
pwd -P
oualias pwd='pwd -P'
aussicd -P
aller sur le chemin physique au lieu du lien symbolique.Réponses:
Votre shell a une fonction intégrée
pwd
, qui essaie d'être «intelligente». Après avoir fait uncd
lien symbolique, lapwd
contrefaçon interne de la sortie comme si vous aviez déplacé vers un vrai répertoire.Passez l'
-P
option àpwd
, c'est- à -dire exécutezpwd -P
. L'-P
option (pour «physique») indique depwd
ne 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:la source
Essayez
cd -P <symlink_dirname>
.Vous pouvez également utiliser
set -o physical
pour 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.
la source