процесс интерпретации строки bash

Если вы хотите установить Oracle JDK на Fedora, вам нужно (проверить архитектуру вашего процессора ).

  • Загрузите файл tar.gz с веб-сайта Oracle
  • Загрузите файл rpm с веб-сайта Oracle

Опция 1 -tar.gz

ИМХО, самый простой и менее инвазивный вариант — загрузить файл tar.gz. Предположим, вы загрузили файл jdk-8u161-linux-x64.tar.gz. После загрузки откройте терминал и извлеките файл в подходящее место, например, в подпапку в домашнем каталоге вашего пользователя /home/myuser/programs, выполнив

cd /home/myuser/programs
tar -xvzf <PATH-TO-DOWNLOADED-FILE>/jdk-8u161-linux-x64.tar.gz

После этого у вас есть каталог jdk1.8.0_161в /home/myuser/programs, на который вы теперь можете ссылаться. Чтобы иметь все двоичные файлы в /home/myuser/programs/jdk1.8.0_161/bin, используйте

export JAVA_HOME=/home/myuser/programs/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH

Это устанавливает переменную среды JAVA_HOMEв каталог, в который вы извлекли все файлы, и помещает все двоичные файлы в подкаталоге binв переменную среды PATH.

Проверьте это с помощью:

java -version

Вывод должен быть:

java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

После успешного завершения не забудьте сохранить настройки среды, добавив их в файл ~/.profileили ~/.bashrc.

Вариант 2 -rpm-файл

Дискалимер :Я так не тестировал.

Для этого вам нужен root-доступ. После загрузки файла rpm вы можете проверить, соблюдены ли все требования для установки JDK, выполнив

rpm -i --test  <PATH-TO-DOWNLOADED-FILE>/jdk-8u161-linux-x64.rpm

После того, как это было успешно, перейдите на root(su root)и установите rpm с помощью

rpm -i <PATH-TO-DOWNLOADED-FILE>/jdk-8u161-linux-x64.rpm

Возможно, вы также можете использоватьsudo

sudo rpm -i <PATH-TO-DOWNLOADED-FILE>/jdk-8u161-linux-x64.rpm

После установки файла rpm вам, возможно, придется добавить двоичные файлы в вашу PATHпеременную, как указано выше (см. вариант 1 ).

0
10.03.2020, 09:02
3 ответа

У вас есть 2 простых оператора, по 1 в строке. Итак, для первой строки шаги 1, 2 и 3 ничего не делают, тогда шаг 4 — это присвоение переменной.

Для второй строки переменная расширяется на шаге 1.

1
28.04.2021, 23:20

...expansions, assignments, and redirections, from left to right.

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

Вы всегда можете изменить

cmd1
cmd2

в

cmd1; cmd2

Но обычно

com ma nd 1
co mma nd 2

люди предпочитают

com ma nd 1; co mma nd 2

В bash у вас нет =по сравнению с ==, поэтому используется специальный синтаксис для присваиваний . Также упоминаются перенаправления , которые вы можете разместить где угодно:

> log.txt echo ${var}s 
echo ${var}s>log.txt

Продолжение строки наоборот:

com \
mand 1
2
28.04.2021, 23:20

Это не та линия. Оболочка выполнит эти шаги дважды.

Кроме того, обратите внимание, что эти:

var="hello friend"; echo ${var}s > log.txt

также являются двумя простыми командами. Но это:

varr="hello friend" echo ${varr}s > log.txt

— одна простая команда. В этом случае ваше сомнение применимо:${varr}будет заменено пустой строкой (, если она не была назначена ранее; Я намеренно использовал новое имя, чтобы старое назначение не мешало ).

1
28.04.2021, 23:20

Теги

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