Почему моя переменная среды не видна из командной строки?

Я пытаюсь запустить SMTP-сервер James на Lion (Mac OS X 10.7.2). Когда я это делаю:

sudo JAVA_HOME=/Library/Java/Home ./james-2.3.2/bin/run.sh 

он отлично работает.

Однако я хотел бы сделать JAVA_HOME переменной окружения, чтобы она была видна и для других приложений.

Я редактировал файл ~ / .bash_profile, чтобы выглядеть так:

 export JAVA_HOME=/Library/Java/home 

и переменная кажется видимой из командной строки следующим образом:

 $ echo $JAVA_HOME /Library/Java/home 

Но когда я снова запускаю james, я получаю предупреждение о JAVA_HOME:

 $ sudo ./james-2.3.2/bin/run.sh ERROR: JAVA_HOME not found in your environment. Please, set the JAVA_HOME variable in your environment to match the location of the Java Virtual Machine you want to use. 

Любые идеи, что я делаю неправильно? Почему команда run james не может видеть переменную среды JAVA_HOME?

Любая информация очень ценится, спасибо!

2 Solutions collect form web for “Почему моя переменная среды не видна из командной строки?”

sudo сбрасывает переменные среды на безопасные значения по умолчанию.

Если вы хотите сохранить эту переменную, вам необходимо visudo и добавить это:

 Defaults env_keep = "JAVA_HOME" 

Обратите внимание, что перенос переменных пользовательской среды на привилегированные учетные записи является возможной угрозой безопасности.

Я не уверен, есть ли у Lion каталог /etc или нет (я предполагаю, что он это делает), или /etc/bashprofile или /etc/bashrc на самом деле находится в этом каталоге, но если вы хотите сделать это изменение в рамках всей системы, просто посмотрите для любого из этих файлов, отредактируйте его и внесите в него изменение так:

 export PATH=$PATH:/path/to/Java/ 

Следующий вход подберет изменения и будет сохранен.

  • Как определить процесс доступа к порту USB (масштаб)?
  • Есть ли способ посмотреть тип файла на Mac?
  • 'ls' показывает два идентичных файла в каталоге
  • Как лучше настроить тройную загрузку с MacOS Sierra, Windows 10 и Linux Mint в 2016 году iMac?
  • Почему ssh немедленно отключается при использовании синтаксиса -F / dev / stdin?
  • Mac запрашивает с помощью `Enter passphrase для ключа при каждом входе в систему
  • Как исправить эту проблему разрешения mysql?
  • Как преобразовать параметры qemu для гостевого пользователя osx для libvirtd
  • Экспорт окна Safari (OSX) в удаленный ящик Linux
  • Где MacOS Finder хранит эту информацию (происхождение файла, который был отправлен мне)?
  • Лучшие варианты установки жесткого диска Mac OS X на моем Linux-боксе?
  • Interesting Posts

    Evalute передается переменной в bash

    Какие инструменты я могу использовать для восстановления файлов со старого жесткого диска?

    Автоматическое извлечение zip-файлов, таких как osx

    Как расширить логический и расширенный раздел с помощью fdisk

    vsftpd не отображает содержимое каталога

    Testprintenv: ошибка при загрузке разделяемых библиотек: libodbc.so.1: невозможно открыть файл общих объектов

    Как мы можем создать несколько фиктивных интерфейсов в Linux?

    слить несортированный файл в отсортированный файл с помощью команды оболочки

    `docker logs foo | less` не доступен для поиска или прокрутки, но `docker logs foo 2> & 1 | меньше` является

    Установка гостевых дополнений на Virtualbox 4.10 – Хост: openSUSE 11.3 64 бит, Гость: Slackware 13.37 32 бит

    Базовая ОС Linux с приложениями GNU и TWM

    Найдите шаблон и вставьте # в начале 2 строки до этого и 1 строку после этого

    Переименование файла, который получил метку цитаты 'в названии

    Использование выражения регулярного выражения внутри if в bash

    Статическое отображение преобразователя USB / RS485 в / dev / ttyUSB

    Linux и Unix - лучшая ОС в мире.