Un processo eredita un ambiente dal processo padre che lo avvia. Per modificare il PERCORSO o altri valori di ambiente in un figlio, possiamo impostare una variabile su un valore nel padre ed esportare la variabile se siamo in una shell, quindi avviare il processo figlio. Il bambino può anche leggere uno o più file di inizializzazione per cambiare il proprio ambiente all'avvio.
Quindi, ci sono altre due domande per ottenere una risposta:
Qual è l'albero di eredità padre / figlio che porta al processo che si desidera venga influenzato dal PERCORSO o dalla modifica dell'ambiente?
Quali file di inizializzazione vengono utilizzati / letti / provenienti dai processi pertinenti in quell'albero?
Ecco parte dell'output di ps (1) per mostrare cosa intendo per albero ereditario:
# /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 ...
Nota le sequenze grafiche \ _ e i numeri PIP / PPID (ID processo e PID padre). Il PID 1855 è stato avviato da (un figlio di?) 1497, avviato dal 1481, avviato dal PID 1, avviato dal processo antenato 0.
Esegui una traccia ereditaria simile per il processo che desideri influire, scopri quali file di inizializzazione sono rilevanti e apporta la modifica a PERCORSO da qualche parte nell'albero, probabilmente con qualcosa di simile a:
PATH=${PATH}:/usr/local/bin
~/.pam_environment
soluzione è che di default pam_env modulo non lo legge, a meno che la distribuzione non lo configuri diversamente. Su Fedora 20 non è letto per esempio.