Я добавил следующую строку в /etc/environment
:
FOO_DEPLOYMENT_ENV="vbox"
После входа в систему через SSH я могу echo $FOO_DEPLOYMENT_ENV
и, конечно, посмотреть vbox
вывод в оболочку. Если я открываю оболочку Python и запускаю os.getenv('FOO_DEPLOYMENT_ENV')
, он вернется 'vbox'
, но тот же код в моем приложении Python при запуске uWSGI (как www-data
user), он не видит переменную окружения.
Ясно, что это не проблема uWSGI, а скорее проблема с моим пониманием переменных среды или того, как они правильно установлены, и контекстов, в которых они могут быть получены. Что я делаю или понимаю неправильно?
Короче нельзя. Переменная среды может существовать в определенном экземпляре оболочки И может быть экспортирована во вспомогательные оболочки. Но ни в коем случае нельзя экспортировать переменные окружения в более родительскую оболочку и, конечно же, за пределы цепочки оболочек.
Однако вы можете хранить записи в файле, как вы предлагаете, а затем импортировать их вручную с помощью '.' в случае производных SH или source
команда производными CSH.
Я лично использую tcsh
для моей интерактивной оболочки. Если бы вы использовали это, вы могли бы указать псевдоним с именем cwdcmd
который будет выполнять набор команд между каждой введенной командой. Я использую эту возможность, чтобы указать имя хоста, имя пользователя и текущий рабочий каталог в моих командных подсказках. Используя это средство, вы можете поставить include
директива, которая будет регулировать вашу среду между каждой командной строкой.