Categorías
GNU-Linux

Rutas absolutas y relativas en Linux: ¿Cuál es la diferencia?

La ruta es uno de los conceptos esenciales en Linux y esto es algo que todo usuario de Linux debe saber.

Una ruta da la ubicación de un archivo o directorio en la estructura de directorios de Linux. Se compone de un nombre y la barra diagonal.

/home/indu/scripts

Como usuario, tendrás que utilizar la ruta cuando quieras acceder a un determinado archivo o directorio o cuando tengas que dar la ubicación de un archivo o directorio a un comando o script.

cat /home/indu/scripts/mi_script.sh

Recordá que si la ruta comienza con la barra «/», la primera barra denota la raíz. El resto de las barras en la ruta son sólo separadores. Los principiantes a menudo se confunden entre la barra de raíz y las barras separadoras.

En el diagrama anterior, sólo la primera ruta comienza con la barra de la raíz.

Ambas son correctas. La primera es una ruta absoluta y la segunda es una ruta relativa. Vamos a verlas en detalle.

Ruta absoluta y relativa en Linux

La ruta absoluta siempre comienza desde el directorio raíz (/). Por ejemplo, /home/indu/scripts/mis_scripts.sh.

Una ruta relativa comienza desde el directorio actual. Por ejemplo, si estás en el directorio /home y querés acceder al archivo my_scripts.sh, podés usar indu/scripts/mis_scripts.sh.

Entender la diferencia entre rutas absolutas y relativas

Ya sabés que la estructura de directorios en Linux se parece a la raíz de un árbol. Todo comienza en la raíz y se ramifica desde allí.

Ahora imaginá que estás en el directorio indu y querés acceder al archivo mis_scripts.sh.

La ruta absoluta está representada en la línea punteada verde y la ruta relativa está representada en las líneas punteadas amarillas.

Supongamos que querés ver las propiedades del archivo mi_script.sh utilizando el comando ls.

Podés utilizar la ruta absoluta que comienza con el directorio raíz (/):

ls -l /home/indu/scripts/mi_script.sh

O bien, podés utilizar la ruta relativa (que comienza en el directorio actual, no en /)

ls -l scripts/mi_script.sh

Ambos comandos darán el mismo resultado (excepto la ruta del archivo).

indu@dtg:~$ pwd
/home/indu
indu@dtg:~$ ls -l /home/indu/scripts/mi_script.sh
-rw-rw-r-- 1 indu indu 1104684 mar 1 14:23 /home/indu/scripts/mi_script.sh
indu@dtg:~$ ls -l ~/scripts/mi_script.sh-rw-rw-r-- 1 indu indu 1104684 mar 1 14:23 /home/indu/scripts/mi_script.sh
indu@dtg:~$ ls -l scripts/mi_script.sh
-rw-rw-r-- 1 indu indu 1104684 mar 1 14:23 scripts/mi_script.sh

En el ejemplo hay una abreviatura para la referencia absoluta. Se trata del ~. Es equivalente, en este caso, a /home/indu. Para el usuario root se usa #, que equivale a /root.

En Linux, los nombres de archivo distinguen entre mayúsculas y minúsculas, números, puntos, guiones, guiones bajos y la mayoría de los símbolos, excepto la barra (/). La barra (/) está reservada para la raíz y para separar directorios en la ruta.

Uso de la ruta relativa con los directorios . y ..

Vamos a ver otros ejemplos para explicar la diferencia entre la ruta absoluta y la relativa. Pero antes de eso, tenés que conocer dos rutas relativas especiales:

  • . (punto simple) denota el directorio actual en la ruta.
  • .. (doble punto) denota el directorio padre, es decir, un nivel por encima.

Las cosas se aclararán en un momento. Mirá la imagen. Querés ir al directorio talleres desde el directorio indu.

Podés utilizar el comando cd para cambiar de directorio. La ruta absoluta es bastante evidente:

cd /home/talleres

Para usar la ruta relativa, tendrás que usar la ruta relativa especial

cd ../talleres

¿Por qué usar ..? Porque una ruta relativa requiere dirección desde el directorio actual y tenés que indicarle al comando cd que suba un nivel antes de bajar. El .. te lleva al directorio /home y desde ahí vas al directorio talleres.

Espero que las cosas estén mucho más claras ahora.

La ruta absoluta siempre comienza con la raíz (/) y seguirá siendo la misma independientemente de tu ubicación actual. La ruta relativa depende de tu ubicación actual.

¿Cuál debería usar? ¿La ruta relativa o la absoluta?

Para ser honesto, no hay una respuesta directa a esta pregunta. Realmente depende de la situación.

Si estás en lo más profundo de la jerarquía de directorios y tenés que subir o bajar un nivel, será más fácil usar la ruta relativa.

Supongamos que estás en el directorio /home/usuario/programacion/proyecto/interfaz/src/cabecera y tenés que acceder a algo en el directorio /home/usuario/programacion/proyecto/interfaz/bin. El uso de la ruta relativa te ahorrará escribir todos esos largos nombres de directorios y podés usar simplemente ../../bin.

Pero si tenés que acceder a algo en el directorio /usr/bin desde el directorio /home/usuario/programacion/proyecto/interfaz/src/cabecera, usar algo como ../../../../../usr/bin no será algo inteligente. Usar la ruta absoluta es lo más sensato en este caso.

Otro caso es el uso de las rutas en scripts o programas. Cuando estés seguro de la ubicación, utilizá la ruta absoluta. Si tu proyecto tiene varias carpetas y se requiere cambiar entre directorios, podés usar la ruta relativa porque no sabes dónde el usuario final copiará todos los archivos del proyecto, si en el directorio home o en algún directorio.

En otras palabras, tenés que conocer ambos métodos y utilizar el que sea más sencillo en función de tu escenario.

 

https://linuxhandbook.com/absolute-vs-relative-path/

Deja una respuesta

Tu dirección de correo electrónico no será publicada.