Переменная JAVA_HOME показывает пустую строку на терминале

Я использую 64-разрядную версию Ubuntu 16.04. Я вошел в Ubuntu как user1. Я установил Oracle JDK версии jdk1.8.0_144 в /usr/local/java и установил символические ссылки как

$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_144/jre/bin/java" 1 $ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_144/bin/javac" 1 $ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_144/jre/bin/javaws" 1 $ sudo update-alternatives --set java /usr/local/java/jdk1.8.0_144/jre/bin/java $ sudo update-alternatives --set javac /usr/local/java/jdk1.8.0_144/bin/javac $ sudo update-alternatives --set javaws /usr/local/java/jdk1.8.0_144/jre/bin/javaws

Затем я открыл файл .bashrc с sudo nano ~/.bashrc и добавил следующие строки в конец файла:

export JAVA_HOME=/usr/local/java/jdk1.8.0_144 export PATH=${JAVA_HOME}/bin:${PATH}

и сохраняется, набрав Ctrl + O.

Однако, когда я набираю echo $JAVA_HOME, терминал показывает пустую строку. Я закрыл и открыл файл .bashrc, и две строки все еще там, поэтому я действительно сохранил файл, я думаю.

0
задан 8 September 2017 в 14:47

3 ответа

Файл ~/.bashrc читается один раз при каждом запуске новой интерактивной оболочки без входа. Другими словами, каждый раз, когда вы открываете новый терминал или просто запускаете bash в уже открытом терминале. Таким образом, любые изменения, внесенные вами, не вступят в силу до тех пор, пока вы не откроете новый терминал для запуска нового сеанса bash.

В качестве альтернативы вы можете source сохранить файл в текущем сеансе с помощью:

. ~/.bashrc

Тем не менее, один раз , и это никогда не требуется для [ f6]. Убедитесь, что файл по-прежнему принадлежит вашему пользователю (ls -l ~/.bashrc), при необходимости измените право собственности (chown swdon:swdon ~/.bashrc) и получите привычку никогда не использовать sudo, если не знаете, что это необходимо.

3
ответ дан 22 May 2018 в 18:40
  • 1
    Спасибо за советы. Я пытаюсь запустить сервер приложений, который использует JDK через JAVA_HOME. Однако приложение говорит JAVA_HOME is not correctly set. Есть ли у вас какие-либо идеи? Я установил приложение в /opt, поэтому я запускаю с помощью sudo wso2server.sh. – swdon 8 September 2017 в 17:50
  • 2
    @swdon, почему вы используете sudo? Вы уверены, что это необходимо? Если вы на 100% уверены, что вам нужно sudo (что кажется ужасно плохой идеей, зачем вам нужно запускать java-программу как root?), Попробуйте sudo -E wso2server.sh. Но сначала попробуйте просто wso2server.sh. – terdon♦ 8 September 2017 в 18:05
  • 3
    Когда я пытаюсь запустить его без sudo, я получаю ошибку Permission Denied. Я думаю, это потому, что приложение java находится в каталоге /opt? Ты гений! Он работал с переключателем -E. Я задам это по отдельному вопросу. Не могли бы вы ответить чуть подробнее? :) – swdon 8 September 2017 в 18:11
  • 4
    @swdon, вы не должны использовать sudo для этого. Что-то не так. Если вы зададите другой вопрос, обязательно объясните, i), что вы используете; ii) как вы его установили; iii) почему он находится в /opt; iv) точная команда , которую вы используете для ее запуска; v) сообщение об ошибке exact , которое вы получите. – terdon♦ 8 September 2017 в 18:16
  • 5
    Я создал новый вопрос в askubuntu.com/questions/953974/… . Я добавлю детали, как вы просили. Я приму свой ответ. – swdon 8 September 2017 в 18:22

Файл ~/.bashrc читается один раз при каждом запуске новой интерактивной оболочки без входа. Другими словами, каждый раз, когда вы открываете новый терминал или просто запускаете bash в уже открытом терминале. Таким образом, любые изменения, внесенные вами, не вступят в силу до тех пор, пока вы не откроете новый терминал для запуска нового сеанса bash.

В качестве альтернативы вы можете source сохранить файл в текущем сеансе с помощью:

. ~/.bashrc

Тем не менее, один раз , и это никогда не требуется для ~/.bashrc. Убедитесь, что файл по-прежнему принадлежит вашему пользователю (ls -l ~/.bashrc), при необходимости измените право собственности (chown swdon:swdon ~/.bashrc) и получите привычку никогда не использовать sudo, если не знаете, что это необходимо.

3
ответ дан 18 July 2018 в 07:13

Файл ~/.bashrc читается один раз при каждом запуске новой интерактивной оболочки без входа. Другими словами, каждый раз, когда вы открываете новый терминал или просто запускаете bash в уже открытом терминале. Таким образом, любые изменения, внесенные вами, не вступят в силу до тех пор, пока вы не откроете новый терминал для запуска нового сеанса bash.

В качестве альтернативы вы можете source сохранить файл в текущем сеансе с помощью:

. ~/.bashrc

Тем не менее, один раз , и это никогда не требуется для ~/.bashrc. Убедитесь, что файл по-прежнему принадлежит вашему пользователю (ls -l ~/.bashrc), при необходимости измените право собственности (chown swdon:swdon ~/.bashrc) и получите привычку никогда не использовать sudo, если не знаете, что это необходимо.

3
ответ дан 24 July 2018 в 18:45

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

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