O fornecimento de seu script apenas define variáveis do shell , enquanto printenv
mostra variáveis de ambiente . Você precisará export
das variáveis para printenv
para mostrá-las. Você pode ter usado o set
, que mostrará as variáveis do shell.
Você poderia ter feito este script:
#!/bin/sh
export MYVAR=MYVAL
echo "EXECUTED!!"
(já que você está usando bash
, o export
trabalha com uma tarefa como mostrado).
A propósito: quando você envia um arquivo, os shells não prestam atenção na linha de hashbang #!/bin/sh
: essa é a província do kernel em qualquer caso, exceto obliquamente. Curiosamente, isso não é mencionado na página de manual. Você pode ver isso fazendo dois arquivos, digamos "foo" e "bar":
#!/bin/bash
echo "outer $0 $SHELL"
. ./bar
printenv |fgrep MYVAR
e
#!/bin/sh
echo "inner $0 $SHELL"
export MYVAR=$MYVAL
para ver que as variáveis do shell (como $0
) são as mesmas dentro do arquivo originado, e que os recursos do shell não são afetados.
Eu adiciono essa linha de qualquer maneira, para ajudar no realce de sintaxe.