O comando pwd é um shell incorporado e / bin / pwd. Sob circunstâncias normais, o built-in será executado em preferência a / bin / pwd. O comando pwd pode ser chamado como pwd -L
ou pwd -P
O padrão builtin e / bin / pwd são a pwd -L
partir da página de manual
-L, --logical usa PWD do ambiente, mesmo que contenha links simbólicos
portanto, quando você executa o pwd, na verdade, executa o pwd -L que, na verdade, imprime $ PWD (se existir). Quando você executa sudo pwd
, o sudo fornece apenas as variáveis de ambiente que foram solicitadas a serem transmitidas por meio de env_keep
diretivas. O PWD normalmente não está nesta lista, portanto, o sudo pwd precisa descobrir onde está e, na verdade, é executado comopwd -P
-P, --physical evita todos os links simbólicos
A maneira de resolver o problema é usar pwd -P
se você deseja consistentemente o caminho do diretório físico ou (como o @Felix diz) para adicionar PWD à lista de variáveis de ambiente para manter através de uma diretiva env_keep em sudoers
env_keep += "PWD"