Bir hizmet için / etc / ortamından okuma ortamını başlatma


17

/etc/environmentBir yeniden başlatma hizmetinde tanımlanan ortam değişkenlerini sağlamanın en iyi yolu nedir ?

Ben sadece .bir komut dosyası bölümünde onları kaynak işe yaramazsa düşünüyorum, çünkü komut dosyaları her tanım önünde shbir ek gerekir hangi tarafından yürütülür export...

Yanıtlar:


16

Sonunda #upstartIRC kanalında bir cevap aldım . Bir noktada, start-up uygun PAM desteği alacak ve böylece /etc/environmentkendini okuyacaktır . O zamana kadar, hile komutu su ile yürütmektir. suPAM kullanır ve uygun ortamı kurar. Misal:

script 
    exec su root -c /usr/sbin/job_needing_envs
end script

Cevabı gönderdiğiniz için teşekkür ederiz, aynı konuda bana yardımcı oldunuz.
— Maxim Veksler

hata:su: must be run from a terminal
— Kuf

3

Kullanma eğilimindeyim eval $(cat /etc/environment | sed 's/^/export /')

Her satırı alır /etc/environment, ekler exportve değerlendirir:

script
exec /bin/bash <<'EOT'
  eval $(cat /etc/environment | sed 's/^/export /')
  do_what_you_need_to
EOT
end script

Neden exec komutunu kullanıyorsunuz ve dışa aktarmayı doğrudan kod bloğuna koymuyorsunuz?
— Guss

1

Bunu betiğinize ekleyin:

. /etc/environment
export VAR1 VAR2 VAR3

Burada ihtiyacınız olan değişkenler "VAR1" tarzı yer tutucular yerine belirtilir.


2
Bu şekilde, yukarı başlatma yapılandırmasını ve / etc / ortamını senkronize olarak tutmam gerekiyor, bu da (bence) değişkenleri iki kez tanımlamaktan daha iyi değil ...
— Nikratio

/etc/environmentGerekli tüm değişkenleri tanımlamak için kullanmam . Bunu statik bir dosya olarak bırakın. Sistemimde, onu zaten kullanan birkaç komut dosyası bulabildim. Şuna benzer bir dosya oluşturun /etc/environment.localve değişkenlerinizi ve dışa aktarmalarınızı oraya koyun ve bu dosyayı kaynaklayın. Sonra sadece o korumak zorunda tek dosya.
— sonraki duyuruya kadar duraklatıldı.

/ etc / environment pam_env.so tarafından okunur (ve herhangi bir komut dosyası tarafından değil), bu nedenle herhangi bir giriş için kullanılabilir. Ne yazık ki, yalnızca upstart tarafından başlatılan programların bu dosyaya varsayılan olarak erişimi yoktur.
— Nikratio
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.