Em cmd
, as variáveis são vazadas para o ambiente por padrão. Você tem que cercar seus comandos por setlocal
- endlocal
para explicitamente evitar isso. Portanto, você pode usar a abordagem sugerida por Thomas Dickey para colocar suas variáveis de ambiente em um .bat
file e call
primeiro.
Normalmente, fazemos isso em máquinas Windows, fornecendo um script setenv.bat
que executamos primeiro no prompt de comando antes de invocar outros scripts.
Editar: para definir um ambiente para um processo pai, às vezes fazemos o seguinte. Basta ter um arquivo de pares de valores-chave descrevendo o ambiente:
envkey1=envval1
envkey2=envval2
e leia isso no processo pai e ajuste o ambiente dessa maneira.
Meu Python-fu não é ótimo, mas em Perl você faria algo como
open(my $f, '<', 'env.txt');
while (<$f>) {
chomp;
my ($k, $v) = split(m/=/, $_, 2); # assumes '=' as separator
$ENV{$k} = $v; # updates the current environment
}
close($f);