Exportar variáveis afeta apenas subshells. Você não pode afetar os shells dos pais dessa maneira. Se você quiser que seu script seja capaz de modificar variáveis no shell atual, então você deve procurá-lo.
. ./some_script.sh
Eu posso atribuir a variável DISPLAY executando a linha de comando:
export DISPLAY=:2
echo $DISPLAY (returns 2)
hostname (returns opt2)
No meu script #! / bin / bash usando o mesmo comando:
echo $DISPLAY (returns 2)
export DISPLAY=:3
echo $DISPLAY (returns 3)
hostname (returns opt2)
MAS, quando eu faço echo $DISPLAY
depois que o script é concluído, ainda recebo "2" como a variável DISPLAY; Em outras palavras, o script falhou em reatribuir a variável DISPLAY de "2" para "3".
Se eu executar meu script bash um segundo (terceiro, quarto ....), sempre obtenho:
echo $DISPLAY (returns 2)
export DISPLAY=:3
echo $DISPLAY (returns 3)
hostname (returns opt2)
Portanto, embora o script diga que atribuiu a variável DISPLAY a "3", isso não acontece!
Como faço meu script bash atribuir a variável DISPLAY?
Exportar variáveis afeta apenas subshells. Você não pode afetar os shells dos pais dessa maneira. Se você quiser que seu script seja capaz de modificar variáveis no shell atual, então você deve procurá-lo.
. ./some_script.sh