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