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

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

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

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

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

  • Почему мой скрипт оболочки висит на `apt-get -y upgrade`?
  • Клавиша Alt + tab не работает в клиенте NX для Linux
  • Что происходит в моем ноутбуке?
  • Ubuntu: в сети со многими клиентами есть две машины, которые не могут одновременно получать доступ к веб-браузеру через браузер
  • Предварительный просмотр миниатюр вторичного дисплея на основном дисплее?
  • Создание образа Debian с панели запуска Ubuntu
  • Какие конкретные уязвимости я могу создать, отключив пароль sudo?
  • Не удается загрузить после установки Ubuntu 15.10 Beta 2
  • 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"

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