it-swarm.com.ru

Сделайте $ 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, не выходя из нее и не входя обратно (И не меняя эту переменную среды , вставьте во все новые терминальные окна)?

138
Junho Park

Поместите переменные среды в глобальный файл /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.

196
Martin Konicek

Это, вероятно, решит вашу проблему: https://help.ubuntu.com/community/EnvironmentVariables

Переменные среды сеанса

Чтобы установить переменные среды таким образом, чтобы это влияло на среду конкретного пользователя, не следует размещать команды для установки их значений в определенных файлах сценариев оболочки в домашнем каталоге пользователя, а использовать:

~/.pam_environment - Этот файл специально предназначен для настройки среды пользователя. Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку.

Не рекомендуется:

~/.profile - это, вероятно, лучший файл для размещения назначений переменных среды, поскольку он автоматически выполняется DisplayManager во время сеанса рабочего стола процесса запуска, а также оболочкой входа в систему при входе из текстовой консоли.

31
Holger Frohloff

Попробуйте эти шаги.

- Мы собираемся отредактировать "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

13
Alex

Вам нужно поместить определение переменной в файл ~/.bashrc.

Со страницы руководства bash:

Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, bash читает и выполняет команды из /etc/bash.bashrc и ~/.bashrc, если эти файлы существуют.

9
Paweł Nadolski

Традиционно, если вы хотите изменить только переменную в окнах вашего терминала, установите ее в файле .bashrc, который создается каждый раз, когда открывается новый терминал. Файл .profile не создается каждый раз, когда вы открываете новый терминал.

Посмотрите на разницу между .profile и .bashrc: В чем разница между .bashrc, .bash_profile и .environment?

.bashrc должен решить вашу проблему. Тем не менее, это не правильное решение, так как вы используете Ubuntu. Смотрите соответствующую страницу справки Ubuntu " переменные среды всего сеанса ". Таким образом, неудивительно, что .profile не работает для вас. Я использую Ubuntu 12.04 и xfce. Я настроил свой .profile, и он просто не вступает в силу, даже если я выйду из системы и войду в нее. Подобный опыт здесь . Поэтому вам, возможно, придется использовать файл .pam_environment и полностью забыть о .profile и .bashrc. И ОБРАТИТЕ ВНИМАНИЕ, что .pam_environment не является файлом сценария.

5
HongboZhu

После внесения изменений в .profile необходимо выполнить файл, чтобы изменения вступили в силу.

[email protected]# . ~/.profile

Как только это будет сделано, команда echo будет работать.

1
user2094397

Я знаю, что это длинный холодный вопрос, но он возникает каждый раз, когда выходит новый или недавний крупный выпуск Java. Теперь это легко применимо к обмену 6 и 7.

Я делал это в прошлом с помощью update-Java-alternatives: http://manpages.ubuntu.com/manpages/hardy/man8/update-Java-alternatives.8.html

1
Alain O'Dea

Взгляните на bash(1) , вам нужна оболочка входа в систему , чтобы получить ~/.profile, т.е. параметр -l.

1
Nikolai Fetissov