Invocando script bash

Invocando script bash

Tendo um script simples:

echo "file: $0"

quando invocado assim:

bash meuscript.sh

ou

./meuscript.sh

fornece o nome do arquivo do script ( file: myscript.sh) conforme esperado, mas quando invocado:

fonte meuscript.sh

ou

. ./meuscript.sh

fornece o nome do shell ( bash) em vez do nome do arquivo de script.

Por que é assim?

Responder1

A primeira chamada iniciará uma nova instância do bash para interpretar o script, o que significa que o bash definirá $0seu caminho.

A segunda chamada tratará o arquivo como executável e o executará, apontando $0para ele.

As duas últimas chamadas carregarão o arquivo na instância atual do bash, então $0apontarão para lá.

NB: #2 precisa que o arquivo seja executável, #1, #3 e #4 não.

informação relacionada