He definido variables en /etc/bashrc
el siguiente asunto:
export VAR1=yadayada
Tengo un script bash llamado runner.sh
con el siguiente código a continuación => ejecutamos allí otro script llamado run_test.sh
que inicia un script de Python. El script de Python utiliza la variable env mencionada anteriormente.
Aquí está runner.sh
el contenido:
#!/bin/bash
exec /home/john/run_test.sh
Al iniciar runner.sh
desde Shell aparece un error que indica que la variable env no está definida.
Si ejecuto lo mismo runner.sh
desde 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 bashrc
y 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