VMesser
@VMesser
gitter.im/VBA-developers

Где хранятся переменные окружения UBUNTU?

Есть приложение на Django, оно берёт значение os.environ['DB_HOST'], я так понимаю переменную окружения ОС.
Не могу понять, где храниться значение этой переменной. Команда env в bash не выводит DB_HOST, в global-settings.py тоже нет.
  • Вопрос задан
  • 1609 просмотров
Пригласить эксперта
Ответы на вопрос 2
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Переменные окружения хранятся в памяти процесса, в вашем случае это bash - командный интерпретатор, который в терминала или в консоли.
Чтобы установить переменную среды используйте команду export.
export DB_HOST=localhost
Маленькое замечание, переменная устанавливается ТОЛЬКО в текущем интерпретаторе, и если запустить второй терминал, то ее там уже не будет!
Чтобы установить переменную для всех интерпретаторов используйте файл .bash_profile в корневой папке пользователя.
Но! Если запускать например из systemd как системный сервис, то нужно передавать переменные отдельно!
В общем и целом, переменные среды хранятся в памяти, а аак они туда попадают - зависит от вызывающей программы или сервиса.
В частном случае легче всего написать скриптовый файл для запуска и установки переменных среды типа start.sh (тоько сделайте его исполняемым
#!/bin/bash

export MYENV=myvalue
python myscript.py

chmod +x start.sh
./start.sh
Ответ написан
@Karpion
Вообще-то, понятие "переменные окружения" - очень многозначное. Например, есть переменные окружения в каждом процессе - как Вам сказали, при fork и exec они копируются от родителя к ребёнку, потом оба могут их менять. В шеллах есть два экземпляра таких переменных: один для наследования, второй для внутреннего использования.

А есть переменные окружения в ядре. Этот набор - один на всю систему (хотя в вирт.машинах он м.б. свой).

Попробуйте погуглить по " os.environ" - там хорошо разжёвано.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы