The pam_env membiarkan modul PAM yang Anda mengatur mereka baik dalam /etc/environment
atau di ~/.pam_environment
, tergantung pada apakah Anda ingin untuk semua pengguna (lebar sistem), atau hanya pengguna Anda (sesi-lebar).
Variabel lingkungan sistem-lebar
Pengaturan variabel lingkungan yang memengaruhi sistem secara keseluruhan (alih-alih hanya pengguna tertentu) tidak boleh ditempatkan di salah satu dari banyak skrip level sistem yang dijalankan ketika sistem atau sesi desktop dimuat, tetapi ke dalam
/etc/environment
- File ini secara khusus dimaksudkan untuk pengaturan variabel lingkungan sistem-lebar. Ini bukan file skrip, melainkan terdiri dari ekspresi penugasan, satu per baris. Secara khusus, file ini menyimpan pengaturan lokal dan jalur sistem.
Variabel lingkungan luas sesi
Pengaturan variabel lingkungan yang harus memengaruhi hanya pengguna tertentu (daripada sistem secara keseluruhan) harus ditetapkan ke:
~/.pam_environment
- File ini secara khusus dimaksudkan untuk mengatur lingkungan pengguna. Ini bukan file skrip, melainkan terdiri dari ekspresi penugasan, satu per baris.
Catatan: Menggunakan .pam_environment
membutuhkan login ulang untuk menginisialisasi variabel. Restart terminal saja tidak cukup untuk dapat menggunakan variabel.
Lihat lebih lanjut di wiki Ubuntu pada Variabel Lingkungan .
~/.pam_environment
solusinya adalah bahwa secara default modul pam_env tidak membacanya, kecuali jika distribusi mengkonfigurasinya. Pada Fedora 20 tidak dibaca misalnya.~/.xsession
akan memuat variabel lingkungan untuk aplikasi X. Lihat unix.stackexchange.com/questions/47359/what-is-xsession-foruser_envfile=filename
. Masalah saya dengan pam_env adalah bahwa variabel HOME mungkin tidak tersedia tergantung pada aplikasi PAM. Yang membatasi penggunaannya hanya variabel absolut./etc/X11/Xsession.d/
... atau di sepanjang baris direktori itu, tergantung pada Linux (?) Anda. Saya menulis sedikit di sini .Konsepnya adalah bahwa setelah login, manajer tampilan memulai "Xsession" dan sumber (!) Semuanya dalam direktori itu dalam urutan abjad. Anda cukup menambahkan skrip yang memodifikasi PATH. Xsession akan menjadi DE Anda sebelum waktunya dan biasanya semua proses adalah anak-anak dari Xsession itu, oleh karena itu mewarisi lingkungan PATH.
sumber
/etc/X11/Xsession.d/40x11-common_xsessionrc
Sumber variabel lingkungan global. Skrip ini akan sumber apa pun dalam $ HOME / .xsessionrc jika file tersebut ada. Ini memungkinkan pengguna untuk mengatur variabel lingkungan global untuk sesi X mereka, seperti informasi lokal.Suatu proses mewarisi lingkungan dari proses induk yang memulainya. Untuk mengubah PATH atau nilai lingkungan lainnya dalam anak, kita dapat mengatur variabel ke nilai di induknya, dan mengekspor variabel jika kita berada di shell, dan kemudian memulai proses anak. Anak juga dapat membaca satu atau lebih file inisialisasi untuk mengubah lingkungannya sendiri saat dimulai.
Jadi, ada dua pertanyaan lagi untuk mendapatkan jawaban:
Apa pohon warisan orang tua / anak yang mengarah ke proses yang Anda ingin dipengaruhi oleh PATH atau perubahan lingkungan?
File inisialisasi apa yang digunakan / dibaca / bersumber dari proses yang relevan di pohon itu?
Ini adalah bagian dari output dari ps (1) untuk menunjukkan apa yang saya maksudkan dengan pohon warisan:
Perhatikan urutan grafik \ _ dan nomor PIP / PPID (ID Proses dan PID Induk). PID 1855 dimulai oleh (beberapa anak?) 1497, yang dimulai oleh 1481, yang dimulai oleh PID 1, yang dimulai oleh proses leluhur 0.
Lakukan penelusuran warisan serupa untuk proses yang ingin Anda pengaruhi, cari tahu file inisialisasi mana yang relevan, dan buat perubahan ke PATH di suatu tempat di pohon itu, mungkin dengan sesuatu yang mirip dengan:
sumber
ps
untuk menentukan proses induk dari login GUI?