Respostas:
O pwd shell interno usa o caminho que o shell monitora quando você cd
(e o armazena $PWD
). Isso significa que, se você tiver um link simbólico para um caminho complexo (profundo), ele informará o que você digitou para alterar para esse diretório, em vez do caminho real. Isso é feito para fornecer o que você deseja na maioria das vezes.
/bin/pwd
usa a getcwd
chamada do sistema (que atualmente é uma chamada de biblioteca, lendo /proc/self/cwd
) que retorna o caminho canônico para o diretório atual, sem todas as passagens do link simbólico.
Como Steven D apontou, pwd
tem a -P
opção de ignorar $PWD
. Ele também tem a -L
opção de retornar o conteúdo de $PWD
. A página de manual do 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 apenas usá-lo pwd -P
.
/bin/pwd
está o GNU pwd
quando POSIXLY_CORRECT não está definido. Nos sistemas POSIX em que pwd
está /bin
. /bin/pwd
usará $ PWD e pode retornar caminhos com links simbólicos. O GNU pwd se comportará dessa maneira POSIX quando encontrar uma variável POSIXLY_CORRECT em seu ambiente.
man pwd
no shell para descobrir opções para este comando.