JAVA_HOME не установлен правильно после добавления и добавления в PATH

311
DsCpp

Ubuntu 14.04 LTS Bash версии 4.3.11 (1) -релиз

Я добавил $ JAVA_HOME в ~ / .profile (и .bash_profile) следующим образом:

# # 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 

Но все же, набрав echo $ JAVA_HOME, вы получите:

XXX:~$ echo $JAVA_HOME JAVA_HOME /usr/local/lib/jdk-8u25/ 
0
Наиболее вероятное объяснение состоит в том, что `JAVA_HOME` снова устанавливается позже в последовательности файла инициализации. Попробуйте `grep JAVA_HOME .profile .bash *` для проверки. Однако `JAVA_HOME = $ (/ usr / bin / java)` неправильный: это устанавливает `JAVA_HOME` на первый токен в выходных данных при запуске` / usr / bin / java`, но это генерирует текст справки о стандартной ошибке и ничего в стандартном выводе, поэтому `JAVA_HOME` установлен в пустую строку. AFH 5 лет назад 0

1 ответ на вопрос

1
Appleoddity

Ты использовал:

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

Использование присваивания переменной с $()указанием Linux делает замену команды. Итак, он пытается выполнить команду /usr/bin/javaи назначить вывод переменной.

Вы должны использовать:

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

Затем, чтобы новые переменные появились, запустите скрипт вашего профиля:

. ~/.profile 

Обратите внимание на дополнительное .в начале. Без него присвоение переменной сохранялось бы только в рамках скрипта.

Похожие вопросы