Иметь выскочку среды чтения из / etc / environment для службы

17

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

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

Nikratio
источник

Ответы:

16

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

script 
    exec su root -c /usr/sbin/job_needing_envs
end script
Nikratio
источник
Спасибо за публикацию ответа, вы помогли мне в том же вопросе.
Максим Векслер
ошибка:su: must be run from a terminal
Куф
3

Я склонен использовать 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
Jrgns
источник
Почему вы используете exec, а не просто помещаете экспорт прямо в блок скрипта?
Гусс
1

Добавьте это к вашему сценарию:

. /etc/environment
export VAR1 VAR2 VAR3

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

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