Невозможно получить переменные среды, экспортированные через подпроцесс - PullRequest
0 голосов
/ 23 октября 2018

У меня есть сценарий оболочки, который экспортирует некоторые учетные данные.

BHUKRK848D:~ ranip.hore$ cat cred.ksh
export ORACLE_UID_MD="abcd"
export ORACLE_PWD_MD="welcome"

Я пытаюсь выполнить сценарий оболочки из сценария Python с использованием подпроцесса и при попытке получить экспортированные переменные с помощью os.environ изСценарий Python, я не могу их получить.

Ниже приведен фрагмент кода, который я выполняю:

BHUKRK848D:~ ranip.hore$ cat demo.py
import os
import subprocess
subprocess.call("sh cred.ksh",shell=True)
print(os.environ.get("ORACLE_UID_MD",None))

BHUKRK848D:~ ranip.hore$ python demo.py 
None

Это связано с тем, что переменные экспортируются в другом процессе ииз скрипта при получении он пытается из какого-то отдельного процесса?Если я выполняю команды экспорта вручную из терминала и запускаю команду python, он может получить учетные данные.

1 Ответ

0 голосов
/ 23 октября 2018

Переменные среды наследуются подпроцессом вниз, но не распространяются вверх в родительский процесс.Установка переменных среды в подпроцесс не влияет на переменные среды родительского процесса.

Вам придется анализировать переменные среды из файла, а не выполнять его.

...