Variáveis ​​de ambiente que foram definidas no bashrc não são acessíveis para/bin/bash

Variáveis ​​de ambiente que foram definidas no bashrc não são acessíveis para/bin/bash

Eu defini variáveis ​​no /etc/bashrcseguinte assunto:

export VAR1=yadayada

Eu tenho um script bash chamado runner.shcom o seguinte código abaixo => executamos outro script chamado run_test.shque está iniciando um script python. O script python usa a variável env mencionada acima.

Aqui está runner.sho conteúdo:

#!/bin/bash
exec /home/john/run_test.sh

Ao iniciar runner.sha partir do shell, recebo um erro informando que a variável env não está definida.

Se eu lançar o mesmo runner.shno 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 bashrce 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

informação relacionada