Рейтинг:0

Где находится путь для команды java, определенный в Ubuntu?

флаг si

Я изо всех сил пытаюсь заставить свою Ubuntu 20.04 распознавать правильную версию Java. Я установил правильную переменную среды внутри сценария оболочки в /etc/profile.d/

Мой $JAVA_HOME вывод:

root@Ubuntu-2004-focal-64-minimal /etc/profile.d # echo $JAVA_HOME
/дом/мив/java/jdk-15.0.2

.. это указывает на правильную версию Java, которую я хочу использовать! (15.0.2)

Кроме того, я добавил этот домашний каталог в свой $ПУТЬ переменная:

root@Ubuntu-2004-focal-64-minimal /etc/profile.d # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ мив/java/jdk-15.0.2

Мой Maven правильно распознает версию, так как использует переменную $JAVA_HOME для определения версии.

root@Ubuntu-2004-focal-64-minimal / # mvn -версия
Апач Мавен 3.6.3
Главная страница Maven: /usr/share/maven
Версия Java: 15.0.2, поставщик: Oracle Corporation, среда выполнения: /home/miw/java/jdk-15.0.2

В настоящее время: Мой вопрос в том, где внутри процесса запуска или вообще в каком файле по умолчанию Ява директория команд определена. я НЕ ХОТЕТЬ просто решение моей проблемы. (например, некоторые автоматизированные программы, где я могу переключаться между альтернативами и т. д.)

Система каким-то образом все же распознает предустановленную версию java, расположенную внутри /usr/lib/jvm/java-11-openjdk-amd64/bin по умолчанию... и действительно, если я загляну внутрь /USR/бен каталоге есть символическая ссылка с именем Ява что указывает на /etc/альтернативы/java символическая ссылка, указывающая на /usr/lib/jvm/java-11-openjdk-amd64/bin.

Следующим моим предположением было то, что это связано с $ПУТЬ иерархия с /USR/бен определяется ДО моего пользовательского $JAVA_HOME.

Хорошо..я попытался удалить эти символические ссылки, надеясь, что система, наконец, достигнет моего пользовательского $JAVA_HOME каталог в поисках Ява исполняемый файл.... что происходит сейчас, так это то, что когда я пытаюсь показать версию Java, возникает ошибка:

root@Ubuntu-2004-focal-64-minimal /etc/alternatives # версия java
-bash: /usr/bin/java: нет такого файла или каталога

Ну, конечно, его больше нет, потому что я его удалил... Почему система берет /USR/бен/Ява все равно как должное? Где это точный путь для Ява определена команда?

Я проверил это, создав собственную символическую ссылку внутри /USR/бен это указывает на мой пользовательский каталог.. и тада..

root@Ubuntu-2004-focal-64-minimal /etc/alternatives # ln -s /home/miw/java/jdk-15.0.2/bin/java /usr/bin/java
root@Ubuntu-2004-focal-64-minimal /etc/alternatives # версия java
openjdk версия "15.0.2" 2021-01-19
Среда выполнения OpenJDK (сборка 15.0.2+7-27)
64-разрядная виртуальная машина сервера OpenJDK (сборка 15.0.2+7-27, смешанный режим, совместное использование)

Так может ли кто-нибудь объяснить мне, что на самом деле здесь произошло? Почему система считает, что /USR/бен/Ява ДОЛЖЕН быть там, где находится команда java? Это как-то разрушает цель $ПУТЬ переменная в первую очередь! Что я не получаю здесь?

флаг hr
* «Почему система все равно принимает /usr/bin/java как должное»* возможно, это место было просто кэшировано вашей оболочкой - см., Например, [Pytest находится в PATH, но не найден] (https://askubuntu.com/ а/861386/178692)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.