Rendi $ JAVA_HOME facilmente modificabile in Ubuntu [chiuso]


139

In Ubuntu, vorrei cambiare la mia variabile d'ambiente JAVA_HOME avanti e indietro tra Java 5 e 6.

Apro un terminale e digito quanto segue per impostare la variabile d'ambiente JAVA_HOME:

export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

E nella stessa finestra del terminale, digito quanto segue per verificare che la variabile di ambiente sia stata aggiornata:

echo $JAVA_HOME

E vedo /usr/lib/jvm/java-1.5.0-sun che è quello che mi aspetto di vedere. Inoltre, modifico ~ / .profile e imposto la variabile d'ambiente JAVA_HOME su /usr/lib/jvm/java-1.5.0-sun.

E ora per il problema: quando apro una nuova finestra del terminale e controllo la mia variabile d'ambiente JAVA_HOME digitando echo $ JAVA_HOME vedo che la mia variabile d'ambiente JAVA_HOME è stata ripristinata su Java 6. Quando riavvio la macchina (o registro avanti e indietro, suppongo) la variabile d'ambiente JAVA_HOME è impostata su Java 5 (presumibilmente a causa della modifica che ho fatto nel mio ~ / .profile).

C'è un modo per aggirare questo in modo che io possa cambiare il mio ambiente JAVA_HOME senza dover disconnettermi e riconnettermi (E fare in modo che la modifica della variabile d'ambiente si attacchi a tutte le nuove finestre del terminale)?


29
Qual è il sito corretto e la risposta duplicata?
Martin Konicek,

Il ~/.profilefile viene letto solo quando si accede a Ubuntu, quindi se si effettua il logout / login, JAVA_HOME è impostato per tutti i terminali e tutte le altre applicazioni eseguite. Se si imposta JAVA_HOME in ~/.bashrcesso verrà visualizzato solo dalle applicazioni eseguite dal terminale.
jr0cket,

Risposte:


196

Inserisci le variabili di ambiente nel /etc/environmentfile globale :

...
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
...

Eseguire "source / etc / environment" in ogni shell in cui si desidera aggiornare le variabili:

$ source /etc/environment

Verifica che funzioni:

$ echo $JAVA_HOME
$ /usr/lib/jvm/java-1.5.0-sun

Ottimo, non è necessario il logout.

Se si desidera impostare la variabile d'ambiente JAVA_HOME solo nel terminale, impostarla nel file ~ / .bashrc .


9
È ancora necessario un riavvio affinché queste modifiche influiscano sulle app avviate tramite l'interfaccia utente di Ubuntu (ovvero facendo doppio clic su un'app)
Eric Hu

7
In che modo è diverso dall'impostare la variabile in ogni friggin 'shell?
mlissner,

1
un altro modo per non
doverlo

1
@MartinKonicek il tuo esempio non è corretto. non ci dovrebbe essere alcuna 'esportazione' su quella linea. / etc / environment contiene coppie di valori-chiave
pdeva,

1
tieni presente che /etc/environmentè speciale e non consente la sostituzione variabile, ad es. JRE_HOME=${JAVA_HOME}/jrenon funzionerà.
Abdull,

31

Questo probabilmente risolverà il tuo problema: https://help.ubuntu.com/community/EnvironmentVariables

Variabili d'ambiente a livello di sessione

Al fine di impostare le variabili di ambiente in modo tale da influire sull'ambiente di un determinato utente, non si dovrebbero inserire comandi per impostare i loro valori in particolari file di script di shell nella home directory dell'utente, ma usare:

~ / .pam_environment - Questo file è specificamente pensato per l'impostazione dell'ambiente dell'utente. Non è un file di script, ma consiste piuttosto di espressioni di assegnazione, una per riga.

Non consigliato:

~ / .profile - Questo è probabilmente il file migliore per l'inserimento delle assegnazioni delle variabili di ambiente, poiché viene eseguito automaticamente da DisplayManager durante la sessione desktop del processo di avvio, nonché dalla shell di accesso quando si accede dalla console testuale.


Dal link che hai fornito: "Di seguito non è consigliabile, ma la soluzione precedente (?) Fornita in questa pagina non ha funzionato con la versione desktop 10.04. .Pam_environment non è naturalmente elaborato con la distribuzione."
Calmarius,

14
~ / .pam_environment è un modo fantastico per bloccare il tuo login se pensi che elabori le variabili. Ho provato a impostare PATH su $ {PATH}: $ {HOME} / bin e non è stato possibile valutare le variabili. Risultato netto: impossibile accedere :( Risolto visitando Ctrl-Alt-1 ed eseguendo "/ bin / rm ~ / .pam_environment". Prestare la massima attenzione o utilizzare un account secondario per testare le impostazioni qui.
Alain O'Dea

6
Personalmente non so perché si siano preoccupati di creare il file di ambiente e poi abbiano funzionato in un modo completamente diverso rispetto a qualsiasi altro meccanismo per impostare le variabili di ambiente mai lavorato prima. Le coppie di valori chiave semplici come quelle utilizzate dal file di ambiente sono semplici BS. C'è una ragione per cui usiamo variabili e collegamenti nell'ambiente e ha ancora merito oggi. Semplifica l'amministrazione. Chiunque sia il bozos che ha deciso che il modo PAM di fare le cose in questo file sia il migliore è imbecille al massimo. Le variabili DEVONO essere interpretate.
Bill Rosmus,

1
@ AlainO'Dea: ho avuto esattamente lo stesso problema. Scioccato e preoccupato quando non sono riuscito a superare la schermata di accesso. Dopo aver scavato un po 'ho scoperto che puoi usare le variabili ma devi usare una sintassi diversa. per esempio. PATH DEFAULT = $ {PATH}: $ {HOME} / bin Quando non utilizza una variabile, sembra che un'assegnazione semplice funzioni.
tim_wonil,

Sì, sono d'accordo con @ AlainO'Dea. Se c'è qualche errore nel tuo script, non sarai in grado di accedere. Stai attento.
Evan Hu,

13

Prova questi passaggi.

- Modificheremo "etc \ profile". Le variabili di ambiente devono essere inserite nella parte inferiore del file. Poiché Ubuntu non dà accesso alla cartella principale, dovremo utilizzare alcuni comandi nel terminale

Passaggio 1: avviare il terminale. Digita il comando:gksudo gedit /etc/profile

Passaggio 2: si aprirà il file di testo del profilo. Immettere le variabili di ambiente nella parte inferiore della pagina ........... Ad esempio: export JAVA_HOME=/home/alex/jdk1.6.0_22/bin/java

export PATH=/home/alex/jdk1.6.0_22/bin:$PATH

step3: salva e chiudi il file. Controllare se le variabili di ambiente sono impostate usando il comando echo ........ Es echo $PATH


9

Devi inserire la definizione della variabile in ~/.bashrc file.

Dalla pagina man di bash:

Quando viene avviata una shell interattiva che non è una shell di accesso, bash legge ed esegue i comandi da /etc/bash.bashrc e ~ / .bashrc, se esistono questi file.


5

Tradizionalmente, se si desidera modificare solo la variabile nelle finestre del terminale, impostarla in un .bashrcfile, che viene fornito ogni volta che si apre un nuovo terminale..profileil file non proviene ogni volta che si apre un nuovo terminale.

Vedi la differenza tra .profile e .bashrc in questione: qual è la differenza tra .bashrc, .bash_profile e .environment?

.bashrcdovrebbe risolvere il tuo problema. Tuttavia, non è la soluzione corretta poiché stai usando Ubuntu. Vedere la relativa pagina di aiuto di Ubuntu " Variabili di ambiente a livello di sessione ". Quindi, non c'è da stupirsi che .profilenon funzioni per te. Uso Ubuntu 12.04 e xfce. Ho impostato il mio .profilee semplicemente non ha effetto anche se mi disconnetto e accedo. Esperienza simile qui . Quindi potresti dover usare il .pam_environmentfile e dimenticartene completamente .profile, e .bashrc. E NOTA che .pam_environmentnon è un file di script.




1

Dopo aver apportato le modifiche a .profile, è necessario eseguire il file affinché le modifiche abbiano effetto.

root@masternode# . ~/.profile

Fatto ciò, il comando echo funzionerà.


Dovresti usare ~/.profilepiuttosto che ./.profile.
Alexis Wilke,
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.