O shell pwd embutido usa o caminho que o shell controla quando você cd
(e armazena em $PWD
). Isso significa que, se você tiver um link simbólico para um caminho complexo (profundo), ele informará o que você digitou para alterar esse diretório em vez do caminho real. Isso é feito para dar o que você deseja na maior parte do tempo.
/bin/pwd
usa a chamada de sistema getcwd
(que hoje em dia é uma chamada de biblioteca, lendo /proc/self/cwd
) que retorna o caminho canônico para o diretório atual, sem todas as travessias de links simbólicos.
Como Steven D apontou, pwd
tem a opção -P
para ignorar $PWD
. Ele também tem a opção -L
para retornar o conteúdo de $PWD
. A man page para pwd
não diz qual opção é usada por padrão, mas a experiência me diz que a descrição acima está correta (shell pwd
vs. /bin/pwd
). No entanto, você provavelmente não deve confiar nisso e usar apenas pwd -P
.