Переменная PATH env в Mac OS X и / или Eclipse

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. (примечание: я не вносил изменений в системные пути, поэтому это настройки по умолчанию, установленные ОС или, возможно, одним или несколькими приложениями, которые я установил.)

Джейсон С
источник

Ответы:

10

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

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

Тед налейд
источник
1
К сожалению, это не работает для меня.
thSoft
9

Для тех из вас, кто ищет ответ спустя годы (Неон, Кислород):

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

Перейти к:

Preferences -> Terminal -> Local Terminal

и установить

Arguments чтобы: --login

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

Мартин Питер
источник
Лучшее решение, решает проблему, просто изменяя конфигурацию Eclipse в графическом интерфейсе.
pXel
Этот ответ заставил меня перейти на Oxygen, и это было все, что мне было нужно, чтобы это работало.
Джон
У меня нет подменю «Терминал» в Eclipse со строкой версии «2019-06 (4.12.0)».
tsj
8

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

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

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

user150161
источник
1
Боже мой № 2 здесь было решение НАМНОГО НАРУШЕНИЯ. Благодарность!!
Томми
1
Я зарегистрировался на этом сайте только для того, чтобы я мог проголосовать за этот ответ - пункт 2 исправил его!
Ифта
Где я могу найти etc / paths?
Джон
1
@John /etc/paths- полный путь к файлу. Вы можете сделать Cmd + Shift + G, а затем поместить в него «/ etc» и нажать ввод / возврат. Вы должны найти файл с именем «paths».
Суфий
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, чтобы мне было легче отлаживать это? Я не знаю, затмевает ли «Затмение» путь.

Джейсон С
источник
2
+1 за ваш последний вопрос. Мне интересно, как диагностировать проблемы с путями в OS X, а не в bash или в терминале.
Фидели
Примечание для будущих Google: Apple теперь включает /usr/local/binпервое в списке пользователей $PATH. (См. Здесь .)
Телемах
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на своем пути?

derobert
источник
1
хороший звонок! Если я запускаю Eclipse из терминала, в пути он / usr / local / bin. Что мне теперь делать? Разве / usr / local / bin не должен быть на пути ко всем приложениям? в какой скрипт я могу вставить это, чтобы, если я запустил Eclipse из Finder или из Dock, он был в пути?
Джейсон С
1
Также у меня нет .bashrc или .bash_profile в моем пользовательском каталоге.
Джейсон С
2

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

Кэти
источник
Это работает для меня, большое спасибо! В моем случае, путь для запуска Eclipse - /Applications/Eclipse.app/Contents/MacOS/eclipse
Цунг-Тинг Куо,
2

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

Например, сделать как root:

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

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

кортик
источник
Это, похоже, не имеет ничего общего с $PATHкаталогами или $PATHподобными/usr/local/bin . Не могли бы вы объяснить более подробно?
Пабук
Вы помещаете символическую ссылку где-нибудь в пути, которая указывает на фактическое местоположение, которое не находится в пути. Я делал это раньше, он работает для отдельных исполняемых файлов, не работает для каталога, полного файлов
Jason S
1

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

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

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

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

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

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

bluearrow
источник
0

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

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

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

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

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

Винс С
источник
0

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

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

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

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

Хит Рафтери
источник