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.