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:
# /bin/ps -o 'uid:5,pid:5,ppid:5,user:4,args' axf
UID PID PPID USER COMMAND
0 1 0 root /usr/lib/systemd/systemd
0 1481 1 root /usr/sbin/gdm-binary -nodaemon
0 1497 1481 root \_ /usr/libexec/gdm-simple-slave ...
0 1504 1497 root \_ /usr/bin/Xorg :0 ...
0 1855 1497 root \_ gdm-session-worker ...
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:
PATH=${PATH}:/usr/local/bin
~/.pam_environment
solusinya adalah bahwa secara default modul pam_env tidak membacanya, kecuali jika distribusi mengkonfigurasinya. Pada Fedora 20 tidak dibaca misalnya.