As variáveis de ambiente são herdadas ... e os processos pai não herdam nada de seus filhos (funciona na outra direção).
No seu primeiro caso, o processo bash que lê o arquivo rc é o mesmo processo no qual você usa a variável, ou seu ancestral.
No seu segundo caso, o processo de leitura do arquivo é o filho do seu shell. Existem 3 maneiras de contornar isso:
- faça com que seu script inicie um novo shell, que herda as variáveis. Seu shell original será retomado (com seu ambiente original) quando você sair
-
source o script rc em vez de executá-lo:
. ./rc
ou
source ./rc
instrui seu shell atual a ler o script em si (em vez de executá-lo em um filho) e depois retomar
-
avalie explicitamente a saída (como geralmente é feito com
ssh-agent
, por exemplo)eval './rc'
onde rc mudou para
#!/bin/bash echo "export mySite=\"superUser\""