Допустим, мы находимся в командной строке и объявляем переменную окружения:
export x=100
Когда я иду на python и набираю:
os.environ['x'] = '100000'
Если я вернулся в команду линия x
остается 100
. Есть ли способ изменить эту переменную в python?
Нет способа изменить переменные окружения из дочернего процесса. И точно такой же вопрос есть в SO .
Существует обходной путь к тому, чего вы хотите достичь. Предполагая, что вы используете bash в качестве оболочки, вы можете записать изменения в файлы инициализации bash (я выбрал ~/.bashrc
):
#!/usr/bin/python
import os
os.system('bash -c \'echo "export a=100000" >> ~/.bashrc\'')
os.system('bash -c \'source ~/.bashrc\'')
Вам нужно добавить bash -c
, так как python использует sh
в качестве оболочка по умолчанию.
Идея возникла из аналогичного вопроса о SO (отличается от того, который написал Falconer )
.