Si je le fais, pwd
je remarque qu'il utilise tous les liens symboliques que j'ai utilisés pour accéder au répertoire actuel. Puis-je l'obtenir pour me dire le "vrai" répertoire dans lequel je me trouve ... c'est-à-dire le chemin de la racine vers mon répertoire actuel sans utiliser de lien symbolique?
54
man pwd
dans shell pour connaître les options de cette commande.Le shell intégré à pwd utilise le chemin que le shell garde en mémoire lorsque vous
cd
(et le stocke$PWD
). Cela signifie que si vous avez un lien symbolique vers un chemin complexe (profond), il vous indiquera ce que vous avez tapé pour changer dans ce répertoire au lieu du chemin réel. Ceci est fait pour vous donner ce que vous voulez la plupart du temps./bin/pwd
utilise l'getcwd
appel système (qui de nos jours est un appel de bibliothèque en lecture/proc/self/cwd
) qui renvoie le chemin canonique du répertoire en cours, sans tous les traversées de liens symboliques.Comme Steven D l'a souligné,
pwd
a la-P
possibilité d'ignorer$PWD
. Il a également la-L
possibilité de retourner le contenu de$PWD
. La page de manuel de forpwd
ne dit pas quelle option est utilisée par défaut, mais l'expérience me dit que la description ci-dessus est correcte (shellpwd
vs/bin/pwd
). Cependant, vous ne devriez probablement pas compter sur cela et simplement l'utiliserpwd -P
.la source
/bin/pwd
GNUpwd
est défini lorsque POSIXLY_CORRECT n'est pas défini. Sur les systèmes POSIX où lepwd
est dans/bin
./bin/pwd
utilisera $ PWD et peut renvoyer des chemins avec des liens symboliques. GNU pwd se comportera de cette manière POSIX quand il trouvera une variable POSIXLY_CORRECT dans son environnement.