17

Когда я печатаю путь в bash, он печатает это:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Когда я запускаю System.out.println(System.getenv("PATH")); в Java работает под Eclipse, он печатает

/usr/bin:/bin:/usr/sbin:/sbin

Как я могу понять, почему существует это несоответствие? Мне нужно добавить /usr /local /bin в PATH и сделать его доступным для приложений Java в Eclipse. (примечание: я не вносил изменений в системные пути, поэтому это настройки по умолчанию, установленные ОС или, возможно, одним или несколькими приложениями, которые я установил.)

12 ответов12

10

Если вы хотите установить переменную всей системы в OSX, вам нужно поместить ее в ~/.Файл MacOSX/environment.plist.

Смотрите эту страницу на сайте Apple для более подробной информации.

9

Для тех из вас, кто ищет ответ спустя годы (Neon, Oxygen):

Некоторые из моих узлов и инструментов angular/angular2 в eclipse завершились неудачно из-за отсутствия записей $ PATH в терминале MacOS. В вашем инструменте, вероятно, используется встроенный терминал Eclipse, который не запускает вашу оболочку для входа / пользователя. Таким образом, вам нужно настроить терминал eclipse в настройках eclipse, чтобы он запускался как --login shell, чтобы включать настройки PATH ваших пользователей:

Идти к:

Preferences -> Terminal -> Local Terminal

и установить

Arguments : --login

откройте новый Терминал в Eclipse, и теперь следует использовать $ PATH вашего пользователя. Также все, что вы настроили в ~/.bash_profile, будет работать при открытии нового терминала в Eclipse.

8

Была такая же проблема. Вот мое решение:

  1. Отредактируйте файл /etc/paths добавив желаемый дополнительный путь.

  2. Для установки OSX запустите /Applications/eclipse/eclipse not /Applications/eclipse/Eclipse.app

6

Ага, я нашел эту страницу, которая говорит

Примечание. Mac OS X не включает /usr /local /bin в путь PATH по умолчанию. Поэтому, предполагая, что вы используете оболочку bash по умолчанию, введите (или включите в /etc /profile) export PATH = /usr /local /bin: $ PATH перед использованием любого из этих инструментов.

Это уместно / неуместно? Я начинаю подозревать, что редактирую системные файлы, если не знаю, что я делаю / usr / local / bin доступен для записи только пользователю root, поэтому я не буду открывать дыру в безопасности, не так ли?


Странно, я добавил путь экспорта, и он не влияет на запуск затмения из дока. Также я нашел эту страницу о путях, и мой файл /etc /paths имеет

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

и тем не менее эти пути не отображаются в Eclipse ... Есть ли простой способ создать / найти двоичный файл, который печатает $ PATH, который я мог бы запустить из Dock, чтобы мне было легче отлаживать это? Я не знаю, затмевает ли «Затмение» путь.

4

Если вы находитесь в Eclipse (протестировано с "Mars"), вы можете изменить "Run Configuration":

  1. Нажмите "Выполнить" → «Выполнить настройки ...»
  2. Выберите подходящую конфигурацию запуска слева
  3. Теперь выберите вкладку "Окружающая среда"
  4. Нажмите «Новый ...»
  5. В поле "Имя" введите "ПУТЬ"
  6. Теперь перейдите в свой терминал, введите «echo $ PATH» и скопируйте результат
  7. Вставить результат в поле "Значение"
  8. Клик "ОК"
  9. Вернувшись на вкладку "Среда", убедитесь, что вы выбрали "Добавить среду к собственной среде"

Теперь Eclipse использует те же значения для переменной среды PATH, что и ваша система. Помните: это верно только для выбранной вами конфигурации запуска.

Как уже отмечалось в вашем вопросе, проверьте в Java:

System.getenv();
2

Скорее всего, один из ваших сценариев входа в bash (.bashrc или .bash_profile) меняет $PATH . Если вы запустите Eclipse из терминала, получит ли он /usr/local/bin на своем пути?

2

В качестве альтернативы вы можете просто добавить символическую ссылку в каталог /usr/local указывающую на ваше приложение.

Например, от имени root:

ln -s /Applications/PhantomJS/phantomjs-1.9.2-macosx/bin/phantomjs /usr /local /phantomjs

Это помогло мне запустить (mvn test) внешнее приложение PhantomJS из проекта Maven в Eclipse.

2

Этот совет выше работает для меня:1) добавить путь к /etc /paths как root 2) запустить eclipse с $ ECL_HOME /Eclipse.app /Contents /MacOS /eclipse вместо $ ECL_HOME /Eclipse.app

1

Вы можете изменить глобальный путь к osx, добавив строку в /etc/launchd.conf и перезагрузив компьютер.

setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Работает в OSX 10.8 и 10.9

https://serverfault.com/questions/16355/how-to-set-global-path-on-os-x/277034#277034

1

Eclipse NEON, Mac OS X 10.11.6
Терминал в Eclipse не может использовать команду mvn .(Я делаю одну мягкую ссылку mvn в /usr/local/bin)

Временное решение:

Щелкните правой кнопкой мыши /Applications/eclipse -> показать содержимое пакета -> содержимое -> MacOS -> дважды щелкните eclipse чтобы начать.

Запустите Eclipse таким образом, Eclipse может обнаружить все настройки пути, а затем я могу использовать команду mvn в терминале Eclipse.

Вы можете щелкнуть правой кнопкой мыши eclipse в этой папке и сделать псевдоним, чтобы удобно его запустить.

Я не знаю почему сейчас. Я думаю, что это должно быть одно ошибка затмения.

0

Сбор нескольких ответов и обновление до чего-то простого:

  1. Щелкните правой кнопкой мыши Eclipse.app и выберите "Показать содержимое пакета".
  2. Перейдите в Contents/MacOS, чтобы найти "затмение".
  3. Щелкните правой кнопкой мыши и выберите "Создать псевдоним" или перетащите его, удерживая команду и параметр.
  4. Положите псевдоним где-нибудь удобно, как обратно в приложениях.
  5. Дважды щелкните, чтобы запустить.
  6. Там нет Шаг 6!

Это не только откроет удобное окно терминала, показывающее необработанный вывод Eclipse, но и автоматически примет любой путь, который вы указали в вашей оболочке входа в систему.

Таким образом, вы можете использовать любой из нормальных методов для установки вашего пути (редактирование /etc/paths или ~/.bash_profile или просто установку хорошо работающего инструмента командной строки, такого как mbed), и больше не беспокойтесь. Если вы можете позвонить из Терминала, Eclipse также может позвонить.

0

отредактируйте ~/.bash_profile чтобы включить путь

вместо запуска в панели запуска,

откройте терминал и запустите его как

/Applications/Eclipse.app/Contents/MacOS/eclipse

Это помогло мне.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .