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.