Можно ли экспортировать переменную env через Upstart?

Мне нужно экспортировать переменную FOO=stringhere чтобы системные процессы могли ее использовать. И место, которое я хотел бы сделать, – это работа Upstart.

К сожалению, я попытался в соответствии с руководством Upstart сделать env FOO=stringhere http://upstart.ubuntu.com/cookbook/#environment-variables

Но после загрузки системы echo $FOO ничего не возвращает.

Я пытаюсь сделать что-то невозможное, или есть какие-то ошибки, которые я должен знать?

  • Перезагрузка заставляет меня потерять ключи без пароля на других машинах
  • Как установить LANG в локали, несмотря на то, что он находится в / etc / default / locale в ubuntu для поддержки Unicode?
  • acpi_video0 яркость не влияет на экран
  • Удалите программное обеспечение и PPA полностью
  • Сенсорная панель Elantech Mouse не работает хорошо
  • Сценарий в cron не может найти команду
  • Является ли GREP_OPTIONS = --color = всегда игнорируется?
  • mei 0000: 00: 16.0: сбой init hw
  • 3 Solutions collect form web for “Можно ли экспортировать переменную env через Upstart?”

    Как говорится на странице,

    Upstart позволяет вам устанавливать переменные среды, которые будут доступны для заданий, в которых заданы файлы конфигурации работы, в которых они определены .

    Параметр указывает, что переменные устанавливаются в среде, используемой системными демонами при запуске. Пользовательская среда настраивается отдельно после входа в систему.

    Если вы хотите проверить, знает ли демон о выбранной вами переменной, вы можете проверить это, временно изменив свой сценарий запуска и добавив что-то вроде logger "=============== The variable FOO is set to $FOO =====================" Затем вы должны увидеть информацию, зарегистрированную во время загрузки (смотрите в /var/log/messages например).

    В вашем примере эта переменная может использоваться в том же файле.

    Примечание из кулинарной книги с выскочкой.

    Обратите внимание: файл конфигурации задания не имеет доступа к переменным среды пользователя, даже не к суперпользователю. Это невозможно, поскольку все созданные рабочие процессы – это дети init, которые не имеют среды пользователя.

    Дальнейшее объяснение от кулинарной книги с выскочкой.

    Допустим, вы пишете env TESTING=123 в вашем файле * .conf, тогда вы можете использовать эту переменную в своем блоке сценария ниже (тот, который вы использовали)

     script # prints "TESTING='123'" to system log logger -t $0 "TESTING='$TESTING'" end script 

    Или немного более сложный подход позволит вам использовать переменную в заданиях, которые «прослушивают» вашу работу:

     # /etc/init/A.conf start on wibble export foo # /etc/init/B.conf start on A script logger "value of foo is '$foo'" end script 

    То, что вы хотите выполнить, лучше подходит для /etc/profile который является source для модулей входа.

    export foo="String here"

    Interesting Posts
    Linux и Unix - лучшая ОС в мире.