В 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, не выходя из системы и обратно (И заставить эту переменную изменения изменить во всех новых окнах терминала)?
Поместите переменные окружения в глобальный файл /etc/environment
:
...
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
...
Выполнить "источник/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
Общие переменные окружения
Чтобы установить переменные окружения таким образом, который влияет на конкретную пользовательскую среду, не следует размещать команды для установки своих значений в конкретных файлах оболочки script в домашнем каталоге пользователя, но используйте:
~/.pam_environment - этот файл специально предназначен для настройки пользовательской среды. Это не файл script, а скорее состоит из выражений присваивания, по одному на строку.
Не рекомендуется:
~/.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
step3: сохранить и закрыть файл. Проверьте, установлены ли переменные среды с помощью команды эхо-сигнала........ Например 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
не является script файлом.
После внесения изменений в .profile вам необходимо выполнить файл, чтобы изменения вступили в силу.
root@masternode# . ~/.profile
Как только это будет сделано, команда echo будет работать.
~/.profile
а не ./.profile
.
Я знаю, что это долгий холодный вопрос, но он возникает каждый раз, когда появляется новая или недавняя крупная версия Java. Теперь это легко применимо к замене 6 и 7.
В прошлом я делал это с помощью update-java-alternatives
:
http://manpages.ubuntu.com/manpages/hardy/man8/update-java-alternatives.8.html
Взгляните на bash(1)
, вам нужна оболочка для входа в систему ~/.profile
, то есть параметр -l
.