O comando pwd é um shell interno e / bin / pwd. Em circunstâncias normais, o builtin será executado em preferência a / bin / pwd. O comando pwd pode ser chamado como pwd -L
ou pwd -P
Tanto o padrão incorporado como / bin / pwd para pwd -L
da página man
-L, --logical use PWD from environment, even if it contains symlinks
então, quando você executa o pwd, você executa 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 instruídas a passar através das diretivas env_keep
. Normalmente, o PWD não está nessa lista, portanto, o sudo pwd precisa descobrir onde está e, na verdade, é executado como pwd -P
-P, --physical avoid all symlinks
A maneira de resolver o problema é usar pwd -P
se você deseja consistentemente o caminho do diretório físico ou (como @Felix diz) adicionar o PWD à lista de variáveis de ambiente para manter por meio de uma diretiva env_keep em sudoers
env_keep += "PWD"