Встроенная оболочка pwd использует путь, который оболочка отслеживает, когда вы cd
(и сохраняет его $PWD
). Это означает, что если у вас есть символическая ссылка на сложный (глубокий) путь, он скажет вам, что вы ввели, чтобы изменить этот каталог вместо реального пути. Это сделано, чтобы дать вам то, что вы хотите большую часть времени.
/bin/pwd
использует getcwd
системный вызов (который в наши дни является библиотечным вызовом, чтение /proc/self/cwd
), который возвращает канонический путь к текущему каталогу, без всех обходов символической ссылки.
Как указал Стивен Д., pwd
имеет -P
возможность игнорировать $PWD
. Он также имеет -L
возможность вернуть содержимое $PWD
. Страница pwd
руководства для не говорит, какая опция используется по умолчанию, но опыт подсказывает, что приведенное выше описание является правильным (оболочка pwd
против /bin/pwd
). Однако вы, вероятно, не должны полагаться на это и просто использовать pwd -P
.
man pwd
в командной строке, чтобы узнать параметры этой команды.