Відповідь залежить від того, чи повинна змінна бути постійною (тобто не повинна змінюватися користувачем, що отримує одиницю) або змінною (повинна бути встановлена користувачем).
Оскільки це ваша локальна одиниця, межа досить розмита, і в будь-якому випадку вона може працювати. Однак якщо ви почали його розповсюджувати, і він закінчився би /usr/lib/systemd/system
, це стане важливим.
Постійне значення
Якщо значення не потрібно змінювати на екземпляр, кращим способом було б розмістити його як Environment=
безпосередньо у файлі одиниці:
[Unit]
Description=My Daemon
[Service]
Environment="FOO=bar baz"
ExecStart=/bin/myforegroundcmd
[Install]
WantedBy=multi-user.target
Перевагою цього є те, що змінна зберігається в одному файлі з одиницею. Тому файл одиниці легше переміщувати між системами.
Змінне значення
Однак вищевказане рішення не працює добре, коли sysadmin повинен змінити значення змінної середовища локально. Більш конкретно, нове значення потрібно встановлювати щоразу, коли одиничний файл оновлюється.
У цьому випадку слід використовувати додатковий файл. Як - зазвичай залежить від політики розподілу.
Одним з особливо цікавих рішень є використання /etc/systemd/system/myservice.service.d
каталогу. На відміну від інших рішень, цей каталог підтримується самим systemd і тому не має конкретних шляхів розподілу.
У цьому випадку ви розміщуєте такий файл, /etc/systemd/system/myservice.service.d/local.conf
який додає відсутні частини файлу одиниці:
[Service]
Environment="FOO=bar baz"
Після цього systemd об'єднує два файли під час запуску послуги (пам’ятайте, що systemctl daemon-reload
після зміни будь-якого з них). А оскільки цей шлях використовується безпосередньо systemd, ви не використовуєте EnvironmentFile=
для цього.
Якщо значення, як передбачається, буде змінено лише для деяких систем, на які постраждали, ви можете комбінувати обидва рішення, надаючи за замовчуванням безпосередньо в блоці та локальне переопределення в іншому файлі.
sysconfig
шлях специфічний для Fedora, але питання стосується Arch Linux. Відповідь paluh цікавіше, я думаю