= İçeren bir ortam sistemi yönergesi nasıl belirtilir?


20

Örneğin bir Environment systemddirektif belirtmek istiyorum=

Environment=CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current

ve hatayı al

[/lib/systemd/system/archiva.service:10] Invalid environment assignment, ignoring: CATALINA_OPTS=-Dappserver.home\=/var/lib/archiva/apache

içinde journalctl -xe. Alıntı yapmayı "ve başarı ile 'kaçmayı denedim . Bu belgelenmemiş görünüyor.=\

Yanıtlar:


40

Bence senin sorunun ortam değişkeninin içeriğindeki alandan kaynaklanıyor. Sistem dökümanlarındaki örneklere bakıldığında, ödev tek bir dize olmalıdır:

Örnek:

Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}

Çalıştırır Bu / bin / dört argümanlarla yankı: one, two, two, ve two two.

Örnek:

Environment=ONE='one' "TWO='two two' too" THREE=
ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
ExecStart=/bin/echo $ONE $TWO $THREE

Yankı Bu sonuçlar argümanlarla ilk kez iki kez çağrıldığını 'one', 'two two' too, ve argümanlarla ikinci kez one, two two, too.

Bunu aşağıdaki servisle test ettim (tüm ödevin etrafındaki alıntıları not alın):

[Unit]
Description=My Daemon

[Service]
Environment='CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current'
ExecStart=/bin/echo ${CATALINA_OPTS}

[Install]
WantedBy=multi-user.target

Ve istenen çıktıyı journalctl:

Apr 26 08:19:29 laptop echo[28439]: -Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current

Tabii ki, bunun EnvironmentFileyerine kullanmak daha kolay olurdu . Şununla değiştirmek, Environmentistenen sonucu vermiştir:

EnvironmentFile=/tmp/foo

Nerede /tmp/fooiçeriyordu (tırnak eksikliği dikkat edin):

CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current

O (kullanarak örneğin alıntı tırnak gelince CATALINA_OPTSde systemdApache için çevre tomcatkullanarak 7.0.61) EnvironmentFilegerçekten gitmek yoludur. Teşekkürler!
Karl Richter

Ubuntu'da EnvironmentFile tutmak için standart / kongre dizini nedir? Gördüğüm diğer sistemlerde / etc / sysconfig /
Davos

1
@Davos makul bir yer olurdu /etc/default. Buradaki dosyalar, karşılık gelen init komut dosyalarına ortam değişkenleri yerleştirmek için tarihsel olarak kullanılmıştır.
muru,

Bu dosya zaten PATH değişkeni içeren / etc / ortamımda var, buna eklenebilir mi?
Davos

1
@Dosos sistem çapında. Değişken hemen hemen her işlem için ayarlanmış bir sorun yoksa, elbette. Not /etc/environmentbir kabuk tarafından işlenmez; Basit değişken atamasının yanı sıra, sözdizimi yukarıda belirtilen sistem sözdiziminden veya genel kabuk sözdiziminden çok farklıdır.
muru
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.