Si lo hago pwd
, noto que usa los enlaces simbólicos que utilicé para ingresar al directorio actual. ¿Puedo hacer que me diga el directorio "real" en el que estoy ... es decir, la ruta desde la raíz a mi directorio actual sin el uso de ningún enlace simbólico?
54
man pwd
shell para encontrar opciones para este comando.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 lagetcwd
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 parapwd
no dice qué opción se usa por defecto, pero la experiencia me dice que la descripción anterior es correcta (shellpwd
vs./bin/pwd
). Sin embargo, probablemente no deberías confiar en eso y solo usarlopwd -P
.fuente
/bin/pwd
es GNUpwd
cuando POSIXLY_CORRECT no está configurado. En sistemas POSIX dondepwd
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.