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

0

Eu defini variáveis em /etc/bashrc no seguinte assunto:

export VAR1=yadayada

Eu tenho o script bash chamado runner.sh com o seguinte código abaixo = > nós rodamos lá outro script chamado run_test.sh que está lançando um script python. O script python usa a variável env mencionada acima.

Aqui está o runner.sh content:

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

Ao lançar runner.sh do shell, recebo um erro que a variável env não está definida.

Se eu lançar o mesmo runner.sh do crontab, tendo a variável env definida também no crontab, tudo dará certo.

Por favor, explique por que, do shell run, não estamos "coletando" a variável env de bashrc e como ela pode ser corrigida?

    
por user653912 18.10.2016 / 23:12

2 respostas

0

Tente isso,

Depois de editar o / etc / bashrc (que versão do Linux você está usando? Eu normalmente coloco coisas como isso em ~ / .bashrc eu mesmo), 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.

    
por 19.10.2016 / 01:49
0

Eu tentei fazer o mesmo que você está fazendo, funciona bem no meu sistema. Como você está tentando alcançar as variáveis de ambiente usando python? Certifique-se de que pyhton esteja usando o método os.environ.

verifique primeiro as variáveis de ambiente

[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
    
por 21.10.2016 / 15:33