Сделайте $JAVA_HOME легко изменяемым в Ubuntu
В Ubuntu я хотел бы переключать свою переменную среды JAVA_HOME назад и вперед между Java 5 и 6.
Я открываю терминал и набираю следующее, чтобы установить переменную среды JAVA_HOME:
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
И в этом же окне терминала я набираю следующее, чтобы проверить, что переменная окружения была обновлена:
echo $JAVA_HOME
И я вижу /usr/lib/jvm/java-1.5.0-sun, что я ожидаю увидеть. Кроме того, я изменяю ~/.profile и устанавливаю переменную среды JAVA_HOME в /usr/lib/jvm/java-1.5.0-sun.
А теперь проблема - когда я открываю новое окно терминала и проверяю свою переменную среды JAVA_HOME, печатая echo $JAVA_HOME, я вижу, что моя переменная среды JAVA_HOME была возвращена обратно в Java 6. Когда я перезагружаю свою машину (или веду журнал и обратно, я полагаю) переменная окружения JAVA_HOME установлена на Java 5 (предположительно, из-за изменений, которые я сделал в моем ~/.profile).
Есть ли способ обойти это так, чтобы я мог изменить свою среду JAVA_HOME без необходимости выходить из системы и снова входить в нее (И сделать так, чтобы изменение переменной среды сохранялось во всех новых окнах терминала)?
8 ответов
Поместите переменные среды в глобальный /etc/environment
файл:
...
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
...
Выполните "source /etc/environment" в каждой оболочке, где вы хотите обновить переменные:
$ source /etc/environment
Проверьте, что это работает:
$ echo $JAVA_HOME
$ /usr/lib/jvm/java-1.5.0-sun
Отлично, не нужно выходить из системы.
Если вы хотите установить переменную окружения JAVA_HOME только в терминале, установите ее в файле ~/.bashrc.
Это, вероятно, решит вашу проблему: https://help.ubuntu.com/community/EnvironmentVariables
Общесессионные переменные среды
Чтобы установить переменные среды таким образом, чтобы это влияло на среду конкретного пользователя, не следует размещать команды для установки их значений в определенных файлах сценариев оболочки в домашнем каталоге пользователя, а использовать:
~ /.pam_environment - Этот файл специально предназначен для настройки среды пользователя. Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку.
Не рекомендуется:
~ /.profile - это, вероятно, лучший файл для размещения назначений переменных среды, поскольку он автоматически выполняется DisplayManager во время сеанса рабочего стола процесса запуска, а также оболочкой входа в систему при входе из текстовой консоли.
Попробуйте эти шаги.
- Мы собираемся отредактировать "etc\profile". Переменные среды должны быть введены внизу файла. Поскольку Ubuntu не дает доступа к корневой папке, нам придется использовать несколько команд в терминале
Шаг 1: Запустите Терминал. Введите команду: gksudo gedit /etc/profile
Шаг 2: Откроется текстовый файл профиля. Введите переменные среды внизу страницы........... Например: export JAVA_HOME=/home/alex/jdk1.6.0_22/bin/java
export PATH=/home/alex/jdk1.6.0_22/bin:$PATH
Шаг 3: сохраните и закройте файл. Проверьте, установлены ли переменные окружения с помощью команды echo........ Например, echo $PATH
Вы должны поместить определение переменной в ~/.bashrc
файл.
Со страницы руководства bash:
Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, bash читает и выполняет команды из /etc/bash.bashrc и ~/.bashrc, если эти файлы существуют.
Традиционно, если вы хотите изменить только переменную в окнах терминала, установите ее в .bashrc
файл, получаемый при каждом открытии нового терминала. .profile
файл не создается каждый раз, когда вы открываете новый терминал.
Посмотрите на разницу между.profile и.bashrc: в чем разница между.bashrc, .bash_profile и.environment?
.bashrc
должен решить вашу проблему. Тем не менее, это не правильное решение, так как вы используете Ubuntu. Смотрите соответствующую справочную страницу Ubuntu " Переменные среды сеанса". Таким образом, неудивительно, что .profile
не работает для вас. Я использую Ubuntu 12.04 и xfce. Я настроил свой .profile
и это просто не вступает в силу, даже если я выйду и войду. Подобный опыт здесь. Так что, возможно, вам придется использовать .pam_environment
файл и полностью забыть о .profile
, а также .bashrc
, И обратите внимание, что .pam_environment
это не файл скрипта.
Взгляни на bash(1)
вам нужнаоболочка для входа ~/.profile
то есть -l
вариант.
После внесения изменений в.profile необходимо выполнить файл, чтобы изменения вступили в силу.
root@masternode# . ~/.profile
Как только это будет сделано, команда echo будет работать.
Я знаю, что это длинный холодный вопрос, но он возникает каждый раз, когда выходит новый или недавний крупный выпуск Java. Теперь это легко применимо к обмену 6 и 7.
Я делал это в прошлом с update-java-alternatives
: http://manpages.ubuntu.com/manpages/hardy/man8/update-java-alternatives.8.html