Действительно ли возможно экспортировать огибающую переменную через Выскочку?

Назад в школе, в лаборатории CS (рабочие станции солнца в то время) я скомпилировал mpg123 из источника в моем корневом каталоге (который был забавой), и затем каждый раз, когда любой выйдет из лаборатории (w/out блокировка их рабочей станции), я изменил бы их .cshrc (оболочка значения по умолчанию рабочих станций) для проигрывания "Воображают" John Lennon каждый раз, когда они вошли в систему. Это развлекло меня ни к какому концу, слыша, что песня, играя очень бесшумно (рабочие станции только имели внутренние динамики) со всех концов лаборатории любое время суток или ночь, что я вошел.

6
15.09.2011, 19:37
3 ответа

Как страница, к которой Вы обращаетесь, говорит,

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

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

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

6
27.01.2020, 20:24
  • 1
    Какие-либо идеи о том, как я мог работать вокруг этой функции? –  Coder 15.09.2011, 17:41
  • 2
    Что Вы подразумеваете под функцией здесь? Какова Ваша цель - знающий, используется ли переменная при системном запуске (см. мое редактирование для того), или экспорт переменной к сессиям оболочки всех Ваших пользователей? –  rozcietrzewiacz 15.09.2011, 17:46
  • 3
    Да, так, чтобы каждый пользователь в системе мог ввести echo $FOO и доберитесь stringhere. –  Coder 15.09.2011, 17:50
  • 4
    Вы ответили на "да" на который один из вопроса двух @rozcietrzewiacz? –  andcoz 15.09.2011, 17:58
  • 5
    Если Вы действительно просто хотите иметь "общедоступную" переменную, видимую всем пользователям, то системное задание запуска не является местом для установки ее. Но Ваш вопрос указывает на проблему установки переменной, которую, как Вы записали, могли использовать системные процессы. Это - другой вопрос (также полезный). Поэтому решите или изменить вопрос или спросить отдельный. –  rozcietrzewiacz 15.09.2011, 19:36

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

Отметьте в новомодной поваренной книге.

Обратите внимание, что Конфигурационный файл Задания не имеет доступа к переменным среды пользователя, даже суперпользователь. Это не возможно, так как все созданные процессы задания являются детьми 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
3
27.01.2020, 20:24

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

export foo="String here"

2
27.01.2020, 20:24

Теги

Похожие вопросы