Un processus hérite d'un environnement du processus parent qui le démarre. Pour modifier le PATH ou d'autres valeurs d'environnement dans un enfant, nous pouvons définir une variable sur une valeur dans le parent, et exporter la variable si nous sommes dans un shell, puis démarrer le processus enfant. L'enfant peut également lire un ou plusieurs fichiers d'initialisation pour modifier son propre environnement au démarrage.
Il y a donc deux autres questions pour obtenir une réponse:
Quel est l'arbre d'héritage parent / enfant qui mène au processus que vous souhaitez être affecté par le PATH ou le changement d'environnement?
Quels fichiers d'initialisation sont utilisés / lus / sourcés par les processus pertinents dans cette arborescence?
Voici une partie de la sortie de ps (1) pour montrer ce que j'entends par un arbre d'héritage:
# /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 ...
Notez les séquences graphiques \ _ et les numéros PIP / PPID (ID de processus et PID parent). Le PID 1855 a été démarré par (un enfant de?) 1497, qui a été démarré par 1481, qui a été démarré par le PID 1, qui a été démarré par le processus ancêtre 0.
Faites une trace d'héritage similaire pour le processus que vous souhaitez affecter, déterminez quels fichiers d'initialisation sont pertinents et apportez la modification à PATH quelque part dans cette arborescence, probablement avec quelque chose de similaire à:
PATH=${PATH}:/usr/local/bin
~/.pam_environment
solution est que par défaut le module pam_env ne le lit pas, à moins que la distribution ne le configure autrement. Sur Fedora 20, ce n'est pas lu par exemple.