Переменные среды, определенные в bashrc, недоступны для /bin/bash

Переменные среды, определенные в bashrc, недоступны для /bin/bash

Я определил переменные в /etc/bashrcследующем виде:

export VAR1=yadayada

У меня есть скрипт bash, который вызывается runner.shследующим кодом ниже => мы запускаем там другой скрипт, run_test.shкоторый запускает скрипт python. Скрипт python использует переменную env, упомянутую выше.

Вот runner.shсодержание:

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

При запуске runner.shиз оболочки возникает ошибка, что переменная env не определена.

Если я запускаю то же самое runner.shиз crontab, при этом переменная env также определена в crontab, то все идет правильно.

Можете ли вы объяснить, почему при запуске оболочки мы не «собираем» переменную env из bashrc, и как это можно исправить?

решение1

Попробуй это,

После редактирования /etc/bashrc (кстати, какую версию Linux вы используете? Я обычно помещаю такие вещи в ~/.bashrc), попробуйте выполнить следующую команду

source /etc/bashrc

и затем запустите ваш скрипт runner.sh.

теперь запустите

set

команду, чтобы увидеть, отображается ли переменная среды в списке.

решение2

Я попробовал сделать то же самое, что и вы, на моей системе все отлично работает. Как вы пытаетесь добраться до переменных окружения с помощью python? Убедитесь, что pyhton использует метод os.environ.

сначала проверьте переменные окружения

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

содержание скриптов

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

запустить скрипт runner.sh

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

Связанный контент