world script hello example español ejemplos linux bash shell unix scripting

linux - script - DIR=“$(cd” $(dirname “${BASH_SOURCE[0]}”) “&& pwd)” ¿Cómo funciona eso?



shell script unix (1)

Bash mantiene una serie de variables que incluyen BASH_SOURCE que es una matriz de BASH_SOURCE de archivos de origen.

${} actúa como un tipo de cita para las variables.

$() actúa como un tipo de cita para los comandos, pero se ejecutan en su propio contexto.

dirname te da la porción de ruta del argumento proporcionado.

cd cambia el directorio actual.

pwd da la ruta actual.

&& es un && lógico and se usa en esta instancia por su efecto secundario de ejecutar comandos uno tras otro.

En resumen, ese comando obtiene la ruta del archivo de origen del script, lo elimina solo en la parte de la ruta, cd s a esa ruta, luego usa pwd para devolver la ruta completa (efectivamente) del script. Esto está asignado a DIR . Después de todo eso, el contexto se desenrolla, por lo que terminará nuevamente en el directorio en el que comenzó, pero con una variable de entorno DIR contiene la ruta del script.

Necesito obtener la ruta del script. Puedo hacerlo usando pwd si ya estoy en el mismo directorio, busqué en línea y encontré esto

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

Pero no sé cómo usar eso.