Come esportare in modo permanente una variabile in Linux?

Sto eseguendo RHEL6 e ho esportato una variabile di ambiente come questa:

export DISPLAY=:0 

Quella variabile è persa quando il CMD è chiuso. Come aggiungo permanentemente questo in modo che questo valore di variabile esista sempre con un particolare utente?

Puoi aggiungerlo al tuo file di configurazione della shell, ad es. $HOME/.bashrc o più globalmente in /etc/environment .

Devi modificare tre file per impostare una variabile di ambiente permanente come segue:

  • ~ / .bashrc

    Quando apri una finestra di terminale, questo file verrà eseguito. Pertanto, se si desidera avere una variabile di ambiente permanente in tutte le windows del terminale, è necessario aggiungere la seguente riga alla fine di questo file:
    export DISPLAY = 0

  • ~ / .profile

  • Come bashrc devi mettere la riga di comando menzionata alla fine di questo file per avere la tua variabile di ambiente in ogni accesso del tuo sistema operativo.

  • / Etc / environment

  • Se vuoi la tua variabile di ambiente in ogni finestra o applicazione (non solo finestra terminale) devi modificare questo file. Aggiungi il seguente comando alla fine di questo file:
    DISPLAY = 0
    Si noti che in questo file non è necessario scrivere il comando di esportazione

Normalmente è necessario riavviare il computer per applicare queste modifiche. Ma puoi applicare le modifiche in bashrc e profile con questi comandi:

$ source ~/.bashrc
$ source ~/.profile

Ma per / etc / environmentemnt non hai altra scelta che riavviare (per quanto ne so)

  • Una soluzione semplice

  • Ho scritto un semplice script per queste procedure per fare tutto questo lavoro. Devi solo impostare il nome e il valore della tua variabile di ambiente.

     #!/bin/bash echo "Enter variable name: " read variable_name echo "Enter variable value: " read variable_value echo "adding " $variable_name " to einvironment variables: " $variable_value echo "export "$variable_name"="$variable_value>>~/.bashrc echo $variable_name"="$variable_value>>~/.profile echo $variable_name"="$variable_value>>/etc/environment source ~/.bashrc source ~/.profile echo "do you wanna restart your computer to apply changes in /etc/environment file? yes(y)no(n)" read restart case $restart in y) sudo shutdown -r 0;; n) echo "don't forget to restart your computer manually";; esac exit 

    Salva queste righe in un file shfile quindi rendilo eseguibile e basta eseguirlo!

    aggiungi la linea al tuo .bashrc o .profile . Le variabili impostate in $HOME/.profile sono attive per l’utente corrente, quelle in /etc/profile sono globali. Il .bashrc viene .bashrc ogni sessione di bash.

    Sui sistemi Ubuntu, utilizzare le seguenti posizioni:

    1. Variabili persistenti a livello di sistema nel formato di JAVA_PATH=/usr/local/java store in

       /etc/environment 
    2. Variabili persistenti a livello di sistema che fanno riferimento a variabili come
      export PATH="$JAVA_PATH:$PATH" in

       /etc/.bashrc 
    3. Variabili persistenti specifiche dell’utente nel formato di PATH DEFAULT=/usr/bin:usr/local/bin store in

       ~/.pam_environment 

    Per maggiori dettagli su # 2, controlla questa risposta Ask Ubuntu . NOTA: # 3 è la raccomandazione di Ubuntu ma potrebbe avere problemi di sicurezza nel mondo reale.

    Un esempio particolare: ho Java 7 e Java 6 installati, ho bisogno di eseguire alcuni build con 6, altri con 7. Quindi ho bisogno di modificare dynamicmente JAVA_HOME modo che Maven raccolga ciò che voglio per ogni build. Ho fatto quanto segue:

    • creato j6.sh script j6.sh che semplicemente esporta JAVA_HOME=... percorso per installare j6 …
    • quindi, come suggerito da uno dei commenti sopra, ogni volta che ho bisogno di J6 per una build, j6.sh sorgente j6.sh nel rispettivo terminale di comando. Per impostazione predefinita, my JAVA_HOME è impostato su J7.

    Spero che questo ti aiuti.