Вопрос: У вас есть выскочка для чтения из / etc / environment для службы


Каков наилучший способ предоставить переменные среды, определенные в /etc/environment для выскочка оказание услуг?

Я думаю, просто . в разделе сценария не работает, потому что скрипты выполняются sh которые потребуют дополнительного export перед каждым определением ...


17
2018-04-01 21:22


Источник




Ответы:


Наконец, я получил ответ на #upstart IRC-канал. В какой-то момент выскочка получит правильную поддержку PAM и, таким образом, прочитает /etc/environment сам. До тех пор, трюк заключается в том, чтобы выполнить команду с помощью su. su использует PAM и настроит надлежащую среду. Пример:

script 
    exec su root -c /usr/sbin/job_needing_envs
end script

16
2018-04-05 13:43



Благодарим вас за отправку ответа, вы помогли мне в той же проблеме. - Maxim Veksler
ошибка: su: must be run from a terminal - Kuf


Я склонен использовать eval $(cat /etc/environment | sed 's/^/export /')

Он берет каждую строку в /etc/environment, добавляет export, и оценивает его:

script
exec /bin/bash <<'EOT'
  eval $(cat /etc/environment | sed 's/^/export /')
  do_what_you_need_to
EOT
end script

3
2017-08-26 19:52



Почему вы используете exec, а не просто экспортируете непосредственно в блок сценариев? - Guss


Добавьте это в свой скрипт:

. /etc/environment
export VAR1 VAR2 VAR3

где нужные вам переменные указаны вместо заполнителей стиля VAR1.


1
2018-04-01 22:11



Таким образом, мне нужно вручную сохранить конфигурацию выскочки и / etc / environment в синхронизации, которая (на мой взгляд) не лучше, чем определение переменных дважды ... - Nikratio
Я не буду использовать /etc/environment для определения всех необходимых переменных. Оставьте это как статический файл. В моей системе я мог найти только несколько сценариев, которые его используют. Создайте файл, который называется /etc/environment.local и поместите свои переменные а также экспорт там и источник что файл. Тогда вам нужно только поддерживать это один файл. - Dennis Williamson
/ etc / environment читается pam_env.so (а не с помощью каких-либо скриптов), поэтому он доступен для любого входа. К сожалению, только программы, запускаемые выскочкой, к этому файлу не имеют доступа к этому файлу defaulht. - Nikratio