Я определил переменные в /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 , и как это можно исправить?

2 ответа2

0

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

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

source /etc/bashrc

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

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

set

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

0

Я пытался сделать то же самое, что вы делаете, это прекрасно работает в моей системе. Как вы пытаетесь добраться до переменных окружения с помощью 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .