Ein Prozess erbt eine Umgebung von dem übergeordneten Prozess, der ihn startet. Um den PATH-Wert oder andere Umgebungswerte in einem untergeordneten Element zu ändern, können wir eine Variable auf einen Wert im übergeordneten Element festlegen und die Variable exportieren, wenn wir uns in einer Shell befinden, und dann den untergeordneten Prozess starten. Das Kind kann auch eine oder mehrere Initialisierungsdateien lesen, um beim Start seine eigene Umgebung zu ändern.
Es gibt also noch zwei weitere Fragen, um eine Antwort zu erhalten:
Was ist der übergeordnete / untergeordnete Vererbungsbaum, der zu dem Prozess führt, der von der PATH- oder Umgebungsänderung betroffen sein soll?
Welche Initialisierungsdateien werden von den relevanten Prozessen in diesem Baum verwendet / gelesen / bezogen?
Hier ist ein Teil der Ausgabe von ps (1), um zu zeigen, was ich mit einem Vererbungsbaum meine:
# /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 ...
Notieren Sie die Grafiksequenzen und die PIP / PPID-Nummern (Prozess-ID und übergeordnete PID). Die PID 1855 wurde von (einem Kind von?) 1497 gestartet, die von 1481 gestartet wurde, die von der PID 1 gestartet wurde, die vom Vorfahrenprozess 0 gestartet wurde.
Führen Sie eine ähnliche Vererbungsablaufverfolgung für den Prozess durch, den Sie beeinflussen möchten, finden Sie heraus, welche Initialisierungsdateien relevant sind, und nehmen Sie die Änderung in PATH irgendwo in dieser Struktur vor, wahrscheinlich mit etwas Ähnlichem wie:
PATH=${PATH}:/usr/local/bin
~/.pam_environment
Lösung ist, dass das Modul pam_env es standardmäßig nicht liest, es sei denn, die Distribution konfiguriert es anders. Auf Fedora 20 wird es beispielsweise nicht gelesen.