Invocando o script bash

0

Como ter um script simples:

echo "file: $0"

quando invocado da seguinte forma:

bash myscript.sh

ou

./myscript.sh

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

source myscript.sh

ou

. ./myscript.sh

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

Por que é assim?

    
por Mulligan 24.05.2017 / 12:40

1 resposta

2

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

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

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

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

    
por 24.05.2017 / 12:48

Tags