Я изменил PATH в файле ~/.bashrc Последние две линии:
export JAVA_HOME="/usr/lib/jvm/jdk-16"
export PATH=/usr/lib/jvm/jdk-16/bin/java:/usr/lib/jvm/jdk-16/bin/javac:$PATH
я открыл новый терминал и дал некоторые команды, результаты:
user@user-Vostro-3669:~$ echo $PATH
/usr/lib/jvm/jdk-16/bin/java:/usr/lib/jvm/jdk-16/bin/javac:/disk2/BACKUP_OLD_MACHINE/NEW4_mnt_newdisk_VC/NEW4/JAVA_JDK/jdk1.8.0_25/bin:/home/user/ROJA_LAKSHMI/BABITA/TERMSUITE/cmd:/home/user/ROJA_LAKSHMI/BABITA/TERMSUITE/bin:/home/user/ROJA_LAKSHMI/BEDREST/HPSG_ACE_ERG/ace-0.9.31/:/home/user/PROGRAMMING_STYLES/EXPERT_SYSTEM/clips_core_source_630/core:/home/user/.local/bin:/home/user/HASKELL/GHC_8.6.4/ghc-8.6.4/bin:/home/user/.local/bin:/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
user@user-Vostro-3669:~$ echo $JAVA_HOME
/usr/lib/jvm/jdk-16
user@user-Vostro-3669:~$ which java
/disk2/BACKUP_OLD_MACHINE/NEW4_mnt_newdisk_VC/NEW4/JAVA_JDK/jdk1.8.0_25/bin/java
user@user-Vostro-3669:~$ java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
user@user-Vostro-3669:~$ /usr/lib/jvm/jdk-16/bin/java -version
java version "16" 2021-03-16
Java(TM) SE Runtime Environment (build 16+36-2231)
Java HotSpot(TM) 64-Bit Server VM (build 16+36-2231, mixed mode, sharing
Моя загадка, почему я не ожидаю результат?
я ожидал видеть:
java version "16" 2021-03-16
, когда я дал команду:
java -version
, Что, возможно, пошло не так, как надо?
Переменная $ PATH
указывает порядок, в котором выполняется поиск исполняемых файлов в каталогах . файлы, а не сами файлы . Поэтому:
export PATH=/usr/lib/jvm/jdk-16/bin/java:/usr/lib/jvm/jdk-16/bin/javac:$PATH
следует заменить на:
export PATH=/usr/lib/jvm/jdk-16/bin:$PATH
Отформатировано для удобства...
echo $PATH
/usr/lib/jvm/jdk-16/bin/java:/usr/lib/jvm/jdk-16/bin/javac:/disk2/BACKUP_OLD_MACHINE/NEW4_mnt_newdisk_VC/NEW4/JAVA_JDK/jdk1.8.0_25/bin:/home/user/ROJA_LAKSHMI/BABITA/TERMSUITE/cmd:/home/user/ROJA_LAKSHMI/BABITA/TERMSUITE/bin:/home/user/ROJA_LAKSHMI/BEDREST/HPSG_ACE_ERG/ace-0.9.31/:/home/user/PROGRAMMING_STYLES/EXPERT_SYSTEM/clips_core_source_630/core:/home/user/.local/bin:/home/user/HASKELL/GHC_8.6.4/ghc-8.6.4/bin:/home/user/.local/bin:/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
PATH
определяет место и порядок поиска исполняемых файлов.
Из Вашего примера /disk2/BACKUP_OLD_MACHINE/NEW4_mnt_newdisk_VC/NEW4/JAVA_JDK/jdk1.8.0_25/bin
является последним (обновленным) местоположением, где был найден исполняемый файл java
, и именно он используется.
JAVA_HOME
- это просто другая переменная, но она не говорит оболочке, где искать java
(PATH
делает это), она используется различными приложениями.
Я бы посоветовал разобраться с вашей переменной PATH
(может быть, оттуда и нужно сделать резервную копию канавы). Что касается приложений, работающих под Java, то большинство из них (те, что разработаны надлежащим образом) ссылаются на JAVA_HOME
. То есть они будут использовать java
, на которое указывает JAVA_HOME
, во время выполнения java
из оболочки будут перенаправлены в последнее место, указанное в PATH
.
Может показаться немного запутанным, и еще хуже, когда вы захотите вручную отладить что-нибудь java
- связанное с оболочкой.