Processos (incluindo shells) apenas herdam variáveis de seus pais. Não há como alterá-las do exterior depois disso.
Defina "variáveis globais" logo no início (para processos do sistema) ou invocação de shell (para processos do usuário), ou resignar-se a configurá-las em vários lugares.
Isso pode parecer uma dor, mas a capacidade de mudar outro ambiente de processos seria um erro e introduziria todos os tipos de condições desagradáveis de corrida.
O que você está tentando fazer com variáveis de ambiente "globais"? Pode haver uma maneira de contornar o problema.
Solução alternativa: Escreva um script mínimo no formato de shell favorito que somente define a variável desejada e coloque-o em um local acessível globalmente:
/etc/loglocaltion.sh
:
export MY_LOG_DIR=/opt/share/mylog
export MY_DEFAULT_LOG_LEVEL=URGENT
e para tudo o que você deseja usar essa configuração, faça um
- inicie-o a partir do shell que possui
source
ed loglocation.sh em seu arquivo de login não interativo (aquele que é lido para todas instâncias do shell, ou seja,.bash_profile
). - escreva um script de wrapper mínimo que origina
loglocation.sh
antes de iniciar o programa real.launchcorelogger.sh
:
CORELOGGER=/opt/sbin/mycorelogger
source /etc/loglocation.sh
exec $CORELOGGER
e tenha init
executando o script.
Agora, as edições no script de loglocation afetarão todo o processamento associado se você executá-las de um shell novo no primeiro caso ou reiniciá-las usando o sistema dameon reiniciado ( /etc/init.d/mycorelogger restart
ou qualquer outro).