2009-02-10 16 views

risposta

90

Le variabili di ambiente di un processo esistono in fase di esecuzione e non vengono memorizzate in alcun file o così. Sono memorizzati nella memoria del processo (è lì che vengono trasferiti ai bambini). Ma v'è un file virtuale in

/proc/pid/environ

Questo file mostra tutte le variabili di ambiente che sono stati passati quando si chiama il processo (a meno che il processo ha sovrascritto quella parte della sua memoria - la maggior parte dei programmi non lo fanno). Il kernel li rende visibili attraverso quel file virtuale. Si possono elencarli. Ad esempio per visualizzare le variabili di processo 3940, si può fare

cat /proc/3940/environ | tr '\0' '\n' 

Ciascuna variabile è delimitata da uno zero binario da quello successivo. tr sostituisce lo zero in una nuova riga.

+0

Queste informazioni sono specifiche per Linux? – cletus

+0

cleto, sì, penso che sia linux specifico, ma non lo so. –

+4

Qualsiasi cosa in '/ proc' dovrebbe essere considerato specifico del sistema operativo. Scrivere programmi che guardano a '/ proc' è un grosso WTF per me. – asveikau

26

Digitare "set" e si otterrà un elenco di tutte le variabili correnti. Se vuoi che qualcosa rimanga, metti in ~/.bashrc o ~/.bash_profile (se stai usando bash)

-7

Quella variabile non è memorizzata in qualche script. È semplicemente impostato dagli script del server X. È possibile controllare le variabili di ambiente attualmente impostate utilizzando impostato.

+0

In realtà, è impostato * da * la shell * per * i client X. – paxdiablo

+0

Ovviamente, è impostato dagli script che attivano il server X. –

7

È memorizzato nel processo (shell) e da quando lo si è esportato, qualsiasi processo che elabora spawn.

Fare quanto sopra non lo memorizza da nessuna parte nel filesystem come/etc/profile. Devi metterlo lì esplicitamente perché ciò accada.

8

Se si desidera mettere l'ambiente per l'utilizzo a livello di sistema, è possibile farlo con il file /etc/environment.

+0

Voto negativo? Perché? Si prega di spiegare. – JohnnyQ

+0

La domanda riguarda il punto in ʀᴀᴍ. – user2284570

+2

@ user2284570 dove nella domanda specificata? Puoi per favore elaborare? – JohnnyQ