Попросіть послугу для читання з / etc / Environment для послуги


17

Який найкращий спосіб надати змінним середовищу, визначеним у службі /etc/environmentдля запуску ?

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

Відповіді:


16

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

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

Дякую, що ви опублікували відповідь, ви допомогли мені в тому ж самому питанні.
Максим Векслер

помилка: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

Чому ви використовуєте exec, а не просто ставите експорт безпосередньо в блок скриптів?
Гасс

1

Додайте це до свого сценарію:

. /etc/environment
export VAR1 VAR2 VAR3

де потрібні змінні вказані замість заповнювачів стилю "VAR1".


2
Таким чином, я повинен вручну підтримувати конфігурацію upstart та / etc / середовище у синхронізації, що (на мій погляд) не є кращим, ніж визначати змінні двічі ...
Nikratio

Я б не використовував /etc/environmentдля визначення всіх необхідних змінних. Залиште це як статичний файл. У моїй системі я міг знайти лише кілька сценаріїв, які так чи інакше використовують його. Створіть файл, який називається щось на зразок, /etc/environment.localі покладіть свої змінні та експортуйте туди і джерело цього файлу. Тоді вам потрібно лише підтримувати цей один файл.
Призупинено до подальшого повідомлення.

/ etc / середовище читається pam_env.so (а не будь-якими сценаріями), тому воно доступне для будь-якого входу. На жаль, лише програми, запущені upstart, не мають доступу до цього файлу за замовчуванням.
Нікратіо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.