Bu sorunun cevabı, değişkenin sabit olması (yani, üniteyi alan kullanıcı tarafından değiştirilmemesi gereken) veya değişken (kullanıcı tarafından ayarlanması gereken) olup olmamasına bağlıdır.
Yerel biriminiz olduğundan, sınır oldukça bulanık ve her iki şekilde de işe yarar. Ancak, dağıtmaya başlarsanız ve sonuçta ortaya çıkarsa /usr/lib/systemd/system
, bu önemli hale gelecektir.
Sabit değer
Değerin örnek başına değişmesi gerekmiyorsa, tercih edilen yol Environment=
, değeri doğrudan birim dosyasına koymaktır:
[Unit]
Description=My Daemon
[Service]
Environment="FOO=bar baz"
ExecStart=/bin/myforegroundcmd
[Install]
WantedBy=multi-user.target
Bunun avantajı, değişkenin ünite ile tek bir dosyada tutulmasıdır. Bu nedenle, birim dosyası sistemler arasında hareket etmek daha kolaydır.
Değişken değer
Bununla birlikte, yukarıdaki çözüm, sysadmin'in ortam değişkeninin değerini yerel olarak değiştirmesi gerektiği zaman işe yaramaz. Daha spesifik olarak, yeni değer, birim dosyası her güncellendiğinde ayarlanmalıdır.
Bu durumda, fazladan bir dosya kullanılacaktır. Nasıl - genellikle dağıtım politikasına bağlıdır.
Özellikle ilginç bir çözüm /etc/systemd/system/myservice.service.d
dizin kullanmaktır . Diğer çözümlerden farklı olarak, bu dizin systemd tarafından desteklenir ve bu nedenle dağıtıma özgü yollar bulunmaz.
Bu durumda, /etc/systemd/system/myservice.service.d/local.conf
birim dosyasının eksik parçalarını ekleyen bir dosya yerleştirirsiniz :
[Service]
Environment="FOO=bar baz"
Daha sonra, systemd hizmeti başlatırken iki dosyayı birleştirir ( systemctl daemon-reload
ikisini de değiştirdikten sonra hatırlayın ). Ve bu yol doğrudan sistem tarafından kullanıldığından, bunun için kullanmazsınız EnvironmentFile=
.
Değerin yalnızca bazı etkilenen sistemlerde değiştirilmesi gerekiyorsa, her iki çözümü birleştirerek, doğrudan ünitede bir varsayılan değer ve diğer dosyada yerel bir geçersiz kılma sağlayabilirsiniz.
sysconfig
yol Fedora'ya özgü ama soru Arch Linux ile ilgili. Paluh tarafından verilen cevap daha ilginç olduğunu düşünüyorum