Las variables de entorno que se definieron en bashrc no son accesibles desde /bin/bash

Las variables de entorno que se definieron en bashrc no son accesibles desde /bin/bash

He definido variables en /etc/bashrcel siguiente asunto:

export VAR1=yadayada

Tengo un script bash llamado runner.shcon el siguiente código a continuación => ejecutamos allí otro script llamado run_test.shque inicia un script de Python. El script de Python utiliza la variable env mencionada anteriormente.

Aquí está runner.shel contenido:

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

Al iniciar runner.shdesde Shell aparece un error que indica que la variable env no está definida.

Si ejecuto lo mismo runner.shdesde crontab, al tener la variable env definida también en crontab, todo va bien.

¿Puede explicar por qué desde la ejecución del shell no estamos "recopilando" la variable env bashrcy cómo se puede solucionar?

Respuesta1

Prueba esto,

Después de editar /etc/bashrc (por cierto, ¿qué versión de Linux estás usando? Normalmente pongo cosas como esta en ~/.bashrc), intenta ejecutar el siguiente comando

source /etc/bashrc

y luego ejecute su script runner.sh.

ahora ejecuta el

set

comando para ver si la variable de entorno se muestra en la lista.

Respuesta2

Intenté hacer lo mismo que tú, funciona bien en mi sistema. ¿Cómo intentas acceder a las variables de entorno utilizando Python? Asegúrese de que Python esté utilizando el método os.environ.

primero verifique las variables de entorno

[john@tilki ~]$ grep VAR /etc/bashrc
export VAR1=bla
[john@tilki ~]$ env | grep VAR
VAR1=bla

contenido de los guiones

[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']

ejecuta el script runner.sh

[john@tilki ~]$ ./runner.sh
bla
bla

información relacionada