JAVA_HOME wird nach dem Hinzufügen und Anhängen an PATH nicht korrekt festgelegt

388
DsCpp

Ubuntu 14.04 LTS Bash-Version 4.3.11 (1) -freigabe

Ich habe $ JAVA_HOME zu ~ / .profile (und .bash_profile) wie folgt hinzugefügt:

# # This is the default standard .profile provided to sh users. # They are expected to edit it to meet their own needs. # # The commands in this file are executed when an sh user first # logs in. # # $Revision: 1.10 $ #  # Set the interrupt character to Ctrl-c and do clean backspacing. if [ -t 0 ] then stty intr '^C' echoe fi  # Set the TERM environment variable eval `tset -s -Q`  # Set the default X server. if [ $ = setdisplay ] then if [ $ != islocal ] then DISPLAY=$:0 else DISPLAY=:0 fi export DISPLAY fi   # List files in columns if standard out is a terminal. ls() { if [ -t ]; then /bin/ls -C $*; else /bin/ls $*; fi }  export JAVA_HOME=$(/usr/bin/java) export PATH=$JAVA_HOME/jre/bin:$PATH 

Die Eingabe von echo $ JAVA_HOME führt jedoch zu folgenden Ergebnissen:

XXX:~$ echo $JAVA_HOME JAVA_HOME /usr/local/lib/jdk-8u25/ 
0
Die wahrscheinlichste Erklärung ist, dass `JAVA_HOME` später in der Reihenfolge der Initialisierungsdateien erneut festgelegt wird. Versuchen Sie `grep JAVA_HOME .profile .bash *` zu überprüfen. `JAVA_HOME = $ (/ usr / bin / java)` ist jedoch falsch: Dadurch wird `JAVA_HOME` auf das erste Token in der Ausgabe von` / usr / bin / java` gesetzt, aber dies erzeugt Hilfetext zu Standardfehler und nichts in der Standardausgabe, daher ist JAVA_HOME auf eine leere Zeichenfolge gesetzt. AFH vor 5 Jahren 0

1 Antwort auf die Frage

1
Appleoddity

Du hast benutzt:

export JAVA_HOME=$(/usr/bin/java) export PATH=$JAVA_HOME/jre/bin:$PATH 

Die Verwendung der Variablenzuweisung mit $()einem Befehl weist Linux an, eine Befehlsersetzung durchzuführen. Es wird also versucht, den Befehl auszuführen /usr/bin/javaund die Ausgabe der Variablen zuzuweisen.

Du solltest benutzen:

export JAVA_HOME=/usr/bin/java export PATH=$JAVA_HOME/jre/bin:$PATH 

Führen Sie dann Ihr Profilskript aus, um die neuen Variablen live zu machen:

. ~/.profile 

Beachten Sie das Extra .am Anfang. Ohne sie würde die Variablenzuweisung nur im Rahmen des Skripts bestehen bleiben.