Invocar script bash

Invocar script bash

Teniendo un guión simple:

echo "file: $0"

cuando se invoca así:

bash myscript.sh

o

./miscript.sh

proporciona el nombre de archivo del script ( file: myscript.sh) como se esperaba, pero cuando se invoca:

fuente myscript.sh

o

. ./miscript.sh

proporciona el nombre del shell ( bash) en lugar del nombre del archivo del script.

¿Por qué es como este?

Respuesta1

La primera llamada iniciará una nueva instancia de bash para interpretar el script, lo que significa que bash establecerá $0su ruta.

La segunda llamada tratará el archivo como ejecutable y lo ejecutará, por lo que $0lo señalará.

Las dos últimas llamadas cargarán el archivo en la instancia actual de bash, por lo que $0apuntarán allí.

NB: #2 necesita que el archivo sea ejecutable, #1, #3 y #4 no.

información relacionada