SystemdDoctor
EnvironmentFile= [Service]

EnvironmentFile= в systemd: переменные из файла

Подключает файл, из которого systemd читает переменные окружения. Формат простой: строки вида «ИМЯ=значение», комментарии с решётки.

Что делает

Удобство в том, что файл можно закрыть правами и не хранить значения в unit-файле. Так дистрибутивы вынесли настройки в /etc/default: путь к файлу указывают в unit, а правит его администратор.

Файл читает systemd, а не оболочка. Поэтому конструкции вида export VAR=1, подстановки и условия там не работают: строка либо имеет вид «ИМЯ=значение», либо игнорируется.

Где ставится. В секции [Service]. Путь абсолютный. Дефис перед путём делает файл необязательным.

Значения

ЗначениеЧто происходит
/etc/myapp/envобязательный файл: без него служба не запустится.
-/etc/default/myappнеобязательный: отсутствие не ошибка.

Пример

Настройки в отдельном файле с закрытыми правами.

[Service]
EnvironmentFile=-/etc/default/myapp
EnvironmentFile=/etc/myapp/secrets.env
ExecStart=/usr/local/bin/myapp

# /etc/myapp/secrets.env, права 0600
DB_PASSWORD=...
API_TOKEN=...

Порядок важен: если переменная встречается в двух файлах, победит значение из того, что подключён позже.

Типичные ошибки

Отсутствие файла без дефиса перед путём останавливает запуск.

export и подстановки в файле не работают: это не скрипт оболочки.

Кавычки вокруг значения снимаются: VAR="a b" даст a b, а не "a b".

Изменение файла требует перезапуска службы: окружение читается при старте.

Связанные ошибки

  • status=1/FAILURE в systemdКод 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
  • No such file or directory в журнале службыСлужба не находит файл или каталог. Разбор: путь, момент запуска, изоляция unit-файла, символические ссылки, приватный /tmp.
  • status=5/NOTINSTALLED и status=6/NOTCONFIGURED в systemdКоды 5 и 6 по соглашению LSB: программа не установлена или не настроена. Что это значит на практике и как проверить.

Рядом стоящие параметры

Где важен на практике

Источники

  • systemd.exec(5) официальная документация
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04) собственная проверка
    сверено 15 сентября 2026