A idéia toda está certa, mas você acaba executando o script de shell em vez de sourcing para fazer o ambiente mudar no shell atual.
Lembre-se sempre, a execução de um script executa um sub-shell e todas as variáveis de ambiente do sistema exportadas são perdidas após o sub-shell ser finalizado.
Veja o que acontece quando você executa o script é executado, com o modo de depuração definido -x
(FYI, estou usando params.env
da pasta atual)
$ bash -x script.sh
+ SOURCE=script.sh
+ '[' -h script.sh ']'
++ dirname script.sh
+ SOURCE=.
++ cat ./params.env
++ xargs
+ export SOMEVAR=val1 SOMEVAR2=val2
+ SOMEVAR=val1
+ SOMEVAR2=val2
Você pode ver que as variáveis estão definidas, mas o sub-shell destrói as variáveis exportadas. Agora, ao pesquisar o script,
source script.sh
printenv | grep SOMEVAR
SOMEVAR=val1
SOMEVAR2=val2
Se a sua versão bash
não der suporte a um comando source
explícito, use as formas POSIX
de fazer . ./script.sh