Pwd es un comando de linux que nos permite conocer en qué ruta de la máquina nos encontramos, mostrando la ruta absoluta (print working directory – pwd).
Más de una vez suele ocurrir que el bash de una máquina no nos muestra la ruta en la que nos encontramos. Es entonces cuando el comando pwd resulta muy útil, y así podemos saber la ruta en la que nos encontramos.
El comportamiento del comando pwd es diferente dependiendo de si usamos el comando autónomo o el comando integrado que es parte de la shell.
Para averiguar que versión del comando usa nuestro sistema, usamos el comando type, que nos muestra info sobre el tipo de comando
eltallerdelbit@debian10:~$ pwd /home/eltallerdelbit eltallerdelbit@debian10:~$ type -a pwd pwd es una orden interna del shell pwd is /usr/bin/pwd pwd is /bin/pwd |
si queremos usar el programa en lugar del comando de shell, usamos el path completo del comando:
/bin/pwd |
Vamos a ver algo más de info acerca del comando.
El comando pwd que es parte de la shell, guarda la ruta que usamos cada vez que usamos el comando cd, y la almacena en la variable $PWD
Podemos comprobarlo entrando en un directorio y visualizando el contenido de la variable
$PWD |
Volvemos a entrar en otro directorio y cargamos de nuevo el valor de la variable, vemos que el valor es siempre el mismo que el directorio en el que nos encontramos
pwd realmente usa el comando getcwd para recoger el directorio en el que nos encontramos en cada momento:
Opciones y ayuda del comando pwd
Lo típico, podemos encontrar la ayuda de pwd con man (aunque no tiene muchas opciones que digamos):
man pwd |
Las opciones de pwd
Tenemos las opciones:
- pwd -L : Logical. Usa el pwd del entorno, incluso si contiene enlaces simbólicos.
- pwd -P : Physical. Evita todos los enlaces simbólicos. (no muestra enlaces simbólicos, muestra los nombres reales de los directorios).
La ayuda de pwd no especifica qué opción utiliza por defecto. También es posible que cambie dependiendo de la versión de distro..
Vemos cómo funcionan estos parámetros de pwd
Creamos un enlace simbólico en un subdirectorio de nuestra home, y este enlace apuntará a un subdirectorio de /var/tmp
nos encontramos en
eltallerdelbit@debian10:~/test$ pwd /home/eltallerdelbit/test |
Ahora desde este directorio, creamos un enlace simbólico hacia /var/tmp/mihome/
eltallerdelbit@debian10:~$ ln -s /var/tmp/mihome/ test/ |
nuestro directorio /var/tmp/mihome/ apuntará a /home/eltallerdelbit/test
lo vemos :
eltallerdelbit@debian10:~/test$ ls -la total 8 drwxr-xr-x 2 eltallerdelbit eltallerdelbit 4096 jul 12 21:12 . drwxr-xr-x 16 eltallerdelbit eltallerdelbit 4096 jul 12 21:12 .. lrwxrwxrwx 1 eltallerdelbit eltallerdelbit 16 jul 12 21:12 mihome -> /var/tmp/mihome/ |
Ahora entramos en dicho directorio (/var/tmp/mihome/) :
eltallerdelbit@debian10:~/test$ cd mihome |
y ejecutamos pwd. Descubrimos que se muestra la ruta del enlace simbólico que hemos creado previamente:
eltallerdelbit@debian10:~/test/mihome$ pwd /home/eltallerdelbit/test/mihome |
y pwd – L hace lo mismo (usa pwd incluso si existen enlaces simbolicos)
eltallerdelbit@debian10:~/test/mihome$ pwd -L /home/eltallerdelbit/test/mihome |
pero si ejecutamos pwd -P, aparece :
eltallerdelbit@debian10:~/test/mihome$ pwd -P /var/tmp/mihome |
Vemos que evita los enlaces simbólicos: