2017-02-13 6 views
0

Я пытаюсь создать ключ шифрования для файла, а затем сохранить его для использования при следующем запуске скрипта. Я знаю, что это не очень безопасно, но это просто временное решение для хранения пароля из git-репо.Как установить переменную среды «системный уровень»?

subprocess.call('export KEY="password"', shell=True) возвращает 0 и ничего не делает. Запуск export KEY="password" вручную в моей подсказке bash отлично работает на Ubuntu.

ответ

1

Это не то, что вы можете сделать. Ваш вызов подпроцесса создает подоболочку и устанавливает env var там, но не влияет на текущий процесс, не говоря уже о вызывающей оболочке.

2

subprocess.call('export KEY="password"', shell=True)

создает оболочку, устанавливает свои KEY и выходы: ничего не совершает.

Переменные окружения не распространяются на родительский процесс, а только на дочерние процессы. Когда вы устанавливаете переменную в своем приглашении bash, она эффективна для всех подпроцессов (но не вне подсказки bash, для быстрой параллели).

Единственный способ сделать это с помощью python - установить пароль с помощью master python (используя os.putenv("KEY","password") или os.environ["KEY"]="password"), который вызывает подмодули или процессы.

+0

Я попробовал 'os.environ' первый, но, как вы сказали, что существует только для подпроцессов. Мой скрипт завершается, завершается, а затем запускается снова позже, поэтому я должен его сохранить. Является ли мой единственный способ написать текстовый файл? –

+0

Я начинаю задаваться вопросом, что случилось с вашим решением для экспорта bash? запись в файл небезопасна, как вы сказали. Звучит все больше и больше как проблема XY для меня. –

1

Использование Python:

#SET: 
os.environ["EnvVar"] = "1" 

#GET: 
print os.environ["EnvVar"]