Miliki pemula membaca lingkungan dari / etc / environment untuk suatu layanan


17

Apa cara terbaik untuk menyediakan variabel lingkungan yang ditentukan /etc/environmentuntuk layanan pemula ?

Saya pikir hanya sumber mereka dengan .di bagian skrip tidak berfungsi, karena skrip dieksekusi oleh shyang akan memerlukan tambahan exportdi depan setiap definisi ...

Jawaban:


16

Saya akhirnya mendapat jawaban di #upstartsaluran IRC. Pada titik tertentu, pemula akan mendapatkan dukungan PAM yang tepat dan dengan demikian membaca /etc/environmentsendiri. Sampai saat itu, triknya adalah menjalankan perintah dengan su. sumenggunakan PAM dan akan mengatur lingkungan yang tepat. Contoh:

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

Terima kasih telah mengirimkan jawabannya, Anda telah membantu saya dalam masalah yang persis sama.
Maxim Veksler

kesalahan:su: must be run from a terminal
Kuf

3

Saya cenderung menggunakan eval $(cat /etc/environment | sed 's/^/export /')

Dibutuhkan setiap baris dalam /etc/environment, prepends export, dan mengevaluasinya:

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

Mengapa Anda menggunakan exec dan tidak hanya menempatkan ekspor langsung di blok skrip?
Guss

1

Tambahkan ini ke skrip Anda:

. /etc/environment
export VAR1 VAR2 VAR3

di mana variabel yang Anda butuhkan ditentukan sebagai pengganti placeholder gaya "VAR1".


2
Dengan cara itu saya harus secara manual menjaga konfigurasi pemula dan / etc / environment dalam sinkronisasi, yang (menurut saya) tidak lebih baik daripada mendefinisikan variabel dua kali ...
Nikratio

Saya tidak akan menggunakan /etc/environmentuntuk mendefinisikan semua variabel yang Anda butuhkan. Biarkan itu sebagai file statis. Di sistem saya, saya hanya dapat menemukan beberapa skrip yang menggunakannya. Buat file bernama sesuatu seperti /etc/environment.localdan menempatkan variabel Anda dan ekspor di sana dan sumber yang berkas. Maka Anda hanya perlu mempertahankan satu file itu.
Dijeda sampai pemberitahuan lebih lanjut.

/ etc / environment dibaca oleh pam_env.so (dan bukan oleh skrip apa pun), sehingga tersedia untuk semua login. Sayangnya, hanya program yang dimulai oleh pemula tidak memiliki akses ke file itu dengan defaulht.
Nikratio
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.