Відповіді:
Нарешті я отримав відповідь на #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
Я схильний використовувати 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
Додайте це до свого сценарію:
. /etc/environment
export VAR1 VAR2 VAR3
де потрібні змінні вказані замість заповнювачів стилю "VAR1".
/etc/environment
для визначення всіх необхідних змінних. Залиште це як статичний файл. У моїй системі я міг знайти лише кілька сценаріїв, які так чи інакше використовують його. Створіть файл, який називається щось на зразок, /etc/environment.local
і покладіть свої змінні та експортуйте туди і джерело цього файлу. Тоді вам потрібно лише підтримувати цей один файл.