Seu script cria uma variável de ambiente, myVar
, no ambiente do script. O script, como é apresentado atualmente, é funcionalmente exatamente equivalente a
#!/bin/bash
export myVar="myVal"
O fato de que export
acontece no corpo da função não é relevante para o escopo da variável de ambiente (nesse caso). Ele começará a existir assim que a função for chamada.
A variável estará disponível no ambiente do script e no ambiente de qualquer outro processo iniciado a partir do script após a chamada de função.
A variável não existirá no ambiente do processo pai (o shell interativo do qual você executa o script), a menos que o script seja originado (com .
ou source
). Nesse caso, todo o script estará sendo executado no ambiente do shell interativo (que é o propósito de "fazer o sourcing" de um arquivo shell).
Sem a chamada da função em si:
myFunc() {
export myVar="myVal"
}
O fornecimento deste arquivo colocaria myFunc
no ambiente do shell de chamada. Chamar a função criaria então a variável de ambiente.
Veja também a pergunta Quais escopos as variáveis de shell podem ter?