Озадачен PATH

Я изменил 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

, Что, возможно, пошло не так, как надо?

0
задан 1 April 2021 в 12:55

2 ответа

Переменная $ 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
1
ответ дан 23 April 2021 в 23:28

Отформатировано для удобства...

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 - связанное с оболочкой.

0
ответ дан 23 April 2021 в 23:28

Другие вопросы по тегам:

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