Eu defini variáveis no /etc/bashrc
seguinte assunto:
export VAR1=yadayada
Eu tenho um script bash chamado runner.sh
com o seguinte código abaixo => executamos outro script chamado run_test.sh
que está iniciando um script python. O script python usa a variável env mencionada acima.
Aqui está runner.sh
o conteúdo:
#!/bin/bash
exec /home/john/run_test.sh
Ao iniciar runner.sh
a partir do shell, recebo um erro informando que a variável env não está definida.
Se eu lançar o mesmo runner.sh
no crontab, tendo a variável env definida também no crontab tudo dá certo.
Você pode explicar por que, no shell run, não estamos "coletando" a variável env de bashrc
e como isso pode ser corrigido?
Responder1
Tente isso,
Depois de editar o /etc/bashrc (qual versão do Linux você está usando? Eu normalmente coloco coisas assim em ~/.bashrc), tente executar o seguinte comando
source /etc/bashrc
e, em seguida, execute seu script runner.sh.
agora execute o
set
comando para ver se a variável de ambiente é exibida na lista.
Responder2
Tentei fazer o mesmo que você está fazendo, funciona bem no meu sistema. Como você está tentando acessar as variáveis de ambiente usando python? Certifique-se de que o python esteja usando o método os.environ.
verifique as variáveis de ambiente primeiro
[john@tilki ~]$ grep VAR /etc/bashrc
export VAR1=bla
[john@tilki ~]$ env | grep VAR
VAR1=bla
conteúdo dos scripts
[john@tilki ~]$ cat runner.sh
#! /bin/bash
echo $VAR1
python print_var.py
[john@tilki ~]$ cat print_var.py
import os
print os.environ['VAR1']
execute o script runner.sh
[john@tilki ~]$ ./runner.sh
bla
bla