È possibile scoprire quali file stanno impostando / aggiungendo alle variabili di ambiente e il loro ordine di precedenza?


9

Alcuni dei miei variabili d'ambiente ( $PATH, $MANPATHe amici) sono parzialmente istituiti in diverse file di origine.

Mi ritrovo a desiderare un comando o un metodo per raccogliere rapidamente quale parte , in una specifica variabile d'ambiente, proviene da quale file .

Il mio set $ PATH, per esempio, ha ovviamente stato (inserito) in .bashrc, /etc/paths, /etc/paths.d/X11... e sto ancora cercando quella dell'ultimo file misteriosa che superfluo creato una definizione del percorso duplicato nel mio $PATH.

Ci vuole del tempo per individuare manualmente i file che contribuiscono alle variabili di ambiente. Deve esserci un modo utile per aggirare questa inutile fatica di rintracciare tutti i setter ... o sono io l'unico a pensare in questo senso?

Risposte:


6

In genere PATHè impostato su un valore iniziale in un modo altamente dipendente dal sistema per il programma che si apre la sessione ( pam_envè un collaboratore comune), quindi /etc/profilee ~/.profilee file che comprendono andare avanti per modificare il valore.

Rimuovi qualsiasi modifica a PATHin .bashrc, le impostazioni di ambiente non appartengono a .bashrc: vedi Differenza tra .bashrc e .bash_profile .

Prima prova ad accedere in modalità testo (ad es. Con ssh localhost), poiché l'avvio della sessione è molto più semplice rispetto alla modalità grafica.

Metti set -xall'inizio di /etc/profilee ~/.profile. La shell stamperà una traccia di ciò che fa sul suo flusso di errori standard; cerca le assegnazioni PATHnella traccia.

Non esiste una nozione di precedenza alle assegnazioni delle variabili d'ambiente: chi assegna le ultime vincite.


6

Il tuo PERCORSO può essere impostato ovunque, non solo nel tuo file .bashrc. Molto probabilmente il tuo sistema ha un file /etc/profilee / o /etc/profile.localche imposta un percorso predefinito per tutti gli utenti sul tuo sistema. Modifiche o aggiunte specifiche dell'utente potrebbero essere impostate nel tuo .profilefile se non sono nel tuo .bashrc, oppure potresti semplicemente utilizzare l'impostazione predefinita sul tuo sistema.

Se desideri apportare modifiche che riguardano solo te, le inserirò nel tuo .profileutilizzando il seguente modulo:

export PATH=/new/directory:$PATH

modificando così il percorso corrente anziché riscriverlo interamente.

La sezione "INVOCATION" di man bash(o qui ) spiega la differenza tra .profilee .bashrc, e così via, e quali altri file e leggi e in quale ordine quando si accede o si avvia una shell.


1

È molto improbabile che esista un meccanismo per questo. Basti pensare a quanti modi ci sono per cambiare il valore di una variabile env nella shell.

set -xTuttavia potresti avere un po 'di fortuna .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.