Respuestas:
El pwd shell incorporado utiliza la ruta que el shell realiza un seguimiento cuando usted cd
(y lo almacena $PWD
). Esto significa que si tiene un enlace simbólico a una ruta compleja (profunda), le dirá lo que escribió para cambiar a ese directorio en lugar de la ruta real. Esto se hace para darle lo que desea la mayor parte del tiempo.
/bin/pwd
utiliza la getcwd
llamada al sistema (que actualmente es una llamada a la biblioteca, lectura /proc/self/cwd
) que devuelve la ruta canónica para el directorio actual, sin todos los recorridos de enlaces simbólicos.
Como Steven D señaló, pwd
tiene la -P
opción de ignorar $PWD
. También tiene la -L
opción de devolver el contenido de $PWD
. La página de manual para pwd
no dice qué opción se usa por defecto, pero la experiencia me dice que la descripción anterior es correcta (shell pwd
vs. /bin/pwd
). Sin embargo, probablemente no deberías confiar en eso y solo usarlo pwd -P
.
/bin/pwd
es GNU pwd
cuando POSIXLY_CORRECT no está configurado. En sistemas POSIX donde pwd
está el /bin
. /bin/pwd
usará $ PWD y puede devolver rutas con enlaces simbólicos. GNU pwd se comportará de esa manera POSIX cuando encuentre una variable POSIXLY_CORRECT en su entorno.
man pwd
shell para encontrar opciones para este comando.