Не удалось установить Ubuntu JAVA_HOMEin с пространством в пути в/etc/environment

Я раздражаюсь, пробуя это, но все, что я пытаюсь сделать, установлено JAVA_HOME в/etc/environment файле в оболочке Bash в окнах, которые открываются теперь с Windows. Мой локальный Java в C:\Program Files\Java\jdk1.8.0_91 так в моем/etc/environment, который я помещаю

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export JAVA_HOME="/mnt/c/Program\ Files/Java/jdk1.8.0_91/"

Считайте онлайн, что для определения пространства нужно использовать \. При выполнении этого:

cd /mnt/c/Program\ Files/Java/jdk1.8.0_91/

Я могу перейти к каталогу, но при помещении того же в/etc/environment файле и определении источника его, если я работаю

echo $JAVA_HOME
/mnt/c/Program\ Files/Java/jdk1.8.0_91/

Я могу сказать, что это неправильно, поскольку это читает его как \, и который является почему выполнение

cd $JAVA_HOME

сбои

Ubuntu 14.04.5 LTS

Если кто-то может предложить относительно того, как решить, это будет значительно цениться.Спасибо.

-1
задан 17 August 2017 в 08:31

3 ответа

Для использования пространства в мире Linux, необходимо сделать один (и только один) следующего:

  1. Кавычка все вещи:

    JAVA_HOME="/mnt/c/Program Files/Java/jdk1.8.0_91/"
    cd "$JAVA_HOME"
    
  2. Escape пространство:

    JAVA_HOME=/mnt/c/Program\ Files/Java/jdk1.8.0_91/
    cd "$JAVA_HOME"
    

, Но не оба. Проблема здесь - то, что заключение в кавычки защищает заключенную в кавычки строку и заставляет ее интерпретироваться буквально. Таким образом, в то время как foo\ bar средства foo, пространство и затем bar, "foo\ bar" средства foo, обратная косая черта, пространство и затем bar.

кроме того, каждый раз, когда Вы используете переменную, необходимо в значительной степени всегда помещать ее в двойных кавычках иначе команда, которой Вы передаете ее, считает два аргумента. Вы видите то, что пошло не так, как надо, если Вы включаете отладку удара путем выполнения set -x (работайте set +x для выключения ее):

$ set -x
$ cd $JAVA_HOME
+ cd /mnt/c/Program Files/Java/jdk1.8.0_91/
bash: cd: too many arguments

то, Что Вы выполнили, было cd /mnt/c/Program Files/Java/jdk1.8.0_91/. Так как пробел разделяет аргументы, это означает, что Вы передали cd два отдельных аргумента: /mnt/c/Program и Files/Java/jdk1.8.0_91/. Заключение в кавычки заставляет cd (или любой другой инструмент) читать все это как отдельный аргумент.

Дополнительные материалы для чтения:

1
ответ дан 2 November 2019 в 10:24

Не используйте экспорт в /etc/environment, это - просто простой файл и не сценарий. Это читает строки один за другим и устанавливает переменные тот путь.

Снова, это не будет команды выполнения.

4
ответ дан 2 November 2019 в 10:24

Теперь, необходимо установить переменную JAVA_HOME для среды.

Сделайте следующие вещи:

  1. Найдите путь, где Ваш Java установлен. (Скорее всего, в/usr/lib/jvm/{JAVA_VERSION}).

  2. Теперь на другом терминале, откройте sudo vi/etc/environment

  3. Необходимо войти: JAVA_HOME = "/usr/lib/jvm/java-9-oracle"
0
ответ дан 2 November 2019 в 10:24

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

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