Команда pwd является встроенной оболочкой и / bin / pwd. При нормальных обстоятельствах встроенная команда будет запускаться с предпочтением / bin / pwd. Команда pwd может быть вызвана как pwd -L
или pwd -P
как встроенная и / bin / pwd по умолчанию pwd -L
со страницы руководства
-L, - логически использовать PWD из окружения, даже если оно содержит символические ссылки
поэтому, когда вы запускаете pwd, вы фактически запускаете pwd -L, который фактически печатает $ PWD (если он существует). Когда вы запускаете sudo pwd
, sudo предоставляет только те переменные окружения, которые были переданы через env_keep
директивы. Обычно PWD в этом списке нет, поэтому sudo pwd должен работать там, где он есть, и фактически работает какpwd -P
-P, --physical избегать всех символических ссылок
Чтобы решить эту проблему, нужно либо использовать, pwd -P
если вы постоянно хотите, чтобы физический путь к каталогу, либо (как говорит @Felix) добавить PWD в список переменных среды, чтобы сохранить его с помощью директивы env_keep в sudoers
env_keep += "PWD"