Назад | Перейти на главную страницу

Устанавливайте переменную среды, только если она пуста

Я разрабатываю служебный файл systemd для какого-то плагина. Мне нужно включить туда два файла окружения: первый для основной программы (пусть будет main.env), второй - для плагина (plugin.env). Плагину нужна переменная VAR должно быть определено до его запуска.

Иногда пользователи могут захотеть определить эту переменную в main.env, иногда эта переменная может отсутствовать, и на самом деле я не контролирую файл среды основной программы, эта переменная может быть удалена из него в следующем выпуске как необязательная.

Поэтому я хочу предоставить запасное значение для переменной, но только в том случае, если оно еще не установлено. Также я хочу, чтобы это резервное значение было фактически определено в plugin.env чтобы пользователи могли изменять это значение локально, не теряя его после обновления, и я использую эту переменную в том же файле для установки следующих переменных.

В bash то, что я хочу, выглядит так: : ${VAR:=fallback_value}. Можно ли записать это в файл окружения systemd?

Я просмотрел мануал (Вот), но, увы, ничего актуального не нашел.

Environment=VAR=fallback_value делает то, что я хочу. Точно:

  1. Определяет VAR если оно не определено ни в одном файле среды (фактически, непосредственно перед чтением файлов конфигурации, это значение просто перезаписывается, если оно определено в этих файлах)
  2. Делает это определенным при включении plugin.env так что я могу определить в этом файле что-л. вроде OPTION=${VAR}/value1 будучи уверенным, что VAR никогда не бывает пустым.

ссылка, grep для «Environment =» там.