Cómo encontrar el directorio donde se encuentra un script bash dentro del script

Cómo encontrar el directorio donde se encuentra un script bash dentro del script
Al trabajar con scripts bash, es útil conocer la ubicación del script. Esto puede ser especialmente útil cuando se trabaja con rutas de archivos relativos, o al intentar ejecutar otros scripts o comandos desde el script. En este artículo, echaremos un vistazo a algunas formas diferentes de determinar el directorio de un script bash desde el script en sí mismo.

Cómo encontrar el directorio donde se encuentra un script bash dentro del script

Mientras Bash Scripting, puede necesitar la ubicación del script para automatizar varias tareas. Hay dos tipos de rutas en Linux:

  • Camino de parientes: Pariente es el directorio de trabajo actual.
  • Camino absoluto: Esta es la ruta completa del directorio y los archivos.

Una de las formas más comunes de determinar la ubicación de un script bash es usar el pwd dominio. El pwd dominio (Directorio de trabajo de impresión) mostrará el directorio actual.

Entonces, en muchas situaciones simplemente usando pwd El comando no funciona, ya que solo le da la ruta del directorio de trabajo actualmente.

Por ejemplo, si el script está en el Descargas directorio y ser ejecutado desde el Escritorio entonces la salida contendrá el /home/usr/escritorio No es la ubicación del archivo de script bash que es /Inicio/USR/Descargas.

Este tutorial se trata de obtener la ruta del directorio en el que el archivo de script bash se encuentra desde el script.

Cómo obtener la ruta de directorio donde se encuentra el archivo de script de bash

Otra forma de determinar el directorio de un script bash es usar el nombre dominio. El nombre El comando toma una ruta de archivo como argumento y devuelve la parte del directorio de la ruta.

Usar nombre comando para determinar el directorio de un script, llamaría el comando con la ruta hasta los últimos componentes no cableados al script como argumento.

Para más detalles sobre nombre Ejecute los siguientes comandos en el terminal:

$ man dirname

Solo nombre no funcionará, necesitamos otro comando que sea readlink. El readlink Impresión de comando resolvió el enlace simbólico. Obtenga más información sobre este comando ejecutando:

$ hombre readlink

Ahora, crear un script:

$ sudo nano myscript.mierda

Y tipo:

#!/bin/bash
echo "La ruta del script bash es $ (dirname -" $ (readlink -f - "$ 0") ";)";

Para ejecutar el uso de script:

$ bash myscript.mierda

Cambiemos el directorio y veamos cuál es la salida:

Nota: En un caso, el script anterior no funcionará si el archivo se obtiene en lugar de ejecutar, ya que se puede ver en la siguiente salida:

La salida es /Home/Sam/Desktop mientras que el archivo de script está presente en el /Inicio/Sam directorio.

Conclusión

En conclusión, hay múltiples formas de determinar el directorio de un script bash desde el mismo script. El nombre junto con readlink Se puede utilizar la utilidad para determinar el directorio de un script. Sin embargo, simplemente usando pwd El comando no funciona, ya que solo le da el directorio de trabajo actualmente.