Come cambiare JAVA_HOME con uno script Bash

1

Ho creato uno script Bash con la seguente riga:

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home" 2> bash_errors.txt

Ho anche reso eseguibile il file

chmod 777 bash_test

Quando eseguo lo script e controllo

java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

Tuttavia, se eseguo direttamente in Bash

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home"

E poi controlla

java -version
java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)

Il percorso cambia. Inoltre, se cambio la riga di script in

sudo export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home" 2> bash_errors.txt

Ho ottenuto quanto segue nel file bash_errors.txt

sudo: export: command not found

Quindi so che lo script è in esecuzione, ma JAVA_HOME non cambia quando viene eseguito dallo script.

Che cosa non capisco? Come cambio la variabile d'ambiente JAVA_HOME da uno script?

Il mio obiettivo è quello di permanentemente modificare JAVA_HOME da 8 a 7 - Alla fine aggiungerò .bash_profile alla mia directory predefinita.

Edit

Cercando di cambiare i file menzionati nel riferimento collegato sono di sola lettura, anche usando sudo vim :

    
posta Roy Hinkley 10.12.2015 - 17:06
fonte

1 risposta

2

Quando esegui uno script, stai creando un nuovo processo fuori dalla shell interattiva che vive per la lunghezza del tuo script.

Per impostazione predefinita, questo processo figlio eredita l'ambiente della shell interattiva e puoi modificarlo / modificarlo. Quindi il contenuto dell'ambiente JAVA_HOME è alterato nel processo figlio, ma il processo figlio non può influenzare l'ambiente del processo genitore nella shell interattiva.

Puoi configurare l'ambiente per la tua shell interattiva in vari punti a seconda della shell (~ / .bash_profile è uno per bash come hai fatto nella tua domanda). Vedi la risposta collegata nel commento alla tua domanda per il modo migliore per impostare in modo permanente i valori di ambiente.

    
risposta data 10.12.2015 - 17:35
fonte

Leggi altre domande sui tag