De help set
:
set: Set or unset values of shell options and positional parameters.
Portanto, os valores que você está inserindo com set
estão literalmente se tornando parâmetros posicionais (argumentos) para set
em vez de variáveis de ambiente.
$ set foo=bar
$ echo "$foo" ##Prints nothing because it is not a variable
$ echo "$1" ##Prints the first argument of the command "set foo=bar"
foo=bar
Agora de help export
:
export: Set export attribute for shell variables.
Isso é o que você precisa para definir uma variável em todo o ambiente, ou seja, esse valor também será propagado para todos os processos filhos.
$ export foo=bar ##setting environment variable foo having value "bar"
$ echo "$foo" ##printing the value of "foo" in current shell
bar
$ bash -c "echo $foo" ##printing the value of "foo" in a subshell
bar
Então, em poucas palavras, você precisa usar o export
builtin ao definir qualquer variável de ambiente.