Відповіді:
Нарешті я отримав відповідь на #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і покладіть свої змінні та експортуйте туди і джерело цього файлу. Тоді вам потрібно лише підтримувати цей один файл.