set
não é usado para manipular variáveis ambientais, ele é usado para definir opções de shell. Pense nisso como o equivalente a um menu de configurações. Assim, enquanto algumas dessas opções podem afetar o modo como bash
lida com variáveis ambientais, isso não tem nada a ver com a configuração delas.
De qualquer forma, se você alterar o valor de uma variável como esta:
foo='bar'
Ele será alterado apenas para o seu shell atual e não afetará mais nada. Se você usa export, assim:
export foo='bar'
Ele será exportado para o shell atual e todos os shells iniciados a partir do shell atual, mas ainda assim não afetará nenhum shells iniciado fora da sessão atual do shell. Para ilustrar:
$ foo='bar'
$ echo "$foo"
bar
$ bash ## start a new shell
$ echo "$foo"
$
O segundo echo
imprime nada porque a variável não foi exportada para o novo shell. Se você tivesse usado export
, teria sido: \
$ export foo='bar'
$ bash
$ echo "$foo"
bar
Em outras palavras, não apenas as mudanças de variáveis como essa não persistem após o reinício, elas nem afetarão os novos shells que você iniciar.