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

24126
Jason S

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

17

12 ответов на вопрос

10
Ted Naleid

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

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

К сожалению, это не работает для меня. thSoft 11 лет назад 1
8
user150161

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

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

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

о боже мой номер 2 здесь было решение НАМНОГО НАРУШЕНИЯ. Спасибо!! Tommy 10 лет назад 1
Я зарегистрировался на этом сайте только для того, чтобы я мог проголосовать за этот ответ - пункт 2 исправил его! Iftah 7 лет назад 1
Где я могу найти etc / paths? John 6 лет назад 0
@John `/ etc / paths` - полный путь к файлу. Вы можете сделать Cmd + Shift + G, а затем поместить в него «/ etc» и нажать ввод / возврат. Вы должны найти файл с именем «paths». Sufian 5 лет назад 1
8
Martin Peter

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

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

Идти к:

Preferences -> Terminal -> Local Terminal 

и установить

Arguments чтобы: --login

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

Лучшее решение, решает проблему, просто изменяя конфигурацию Eclipse в графическом интерфейсе. pXel 6 лет назад 0
Этот ответ заставил меня перейти на Oxygen, и это было все, что мне было нужно, чтобы он работал. John 6 лет назад 0
6
Jason S

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

Примечание. 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, чтобы мне было легче отлаживать это? Я не знаю, затмевает ли «Затмение» путь.

+1 за ваш последний вопрос. Мне интересно, как диагностировать проблемы с путями в OS X *, а не * в bash или в терминале. fideli 14 лет назад 2
Примечание для будущих пользователей Google: Apple теперь включает `/ usr / local / bin` первым в` $ PATH` пользователей. (См. [Здесь] (https://superuser.com/questions/7150/mac-os-x-conventional-places-where-binary-files-should-live/7163?noredirect=1#comment2079827_7163).) Telemachus 5 лет назад 0
4
Mike

If you are on Eclipse (tested with "Mars"), you could change your "Run Configuration":

  1. Click on "Run" → "Run Configurations..."
  2. Choose the appropriate run configuration on the left
  3. Now choose tab "Environment"
  4. Click on "New..."
  5. In the "Name" field, enter "PATH"
  6. Now go to your Terminal, enter "echo $PATH" and copy the result
  7. Past the result into the "Value" field
  8. Klick "OK"
  9. Back in the "Environment" tab, make sure you select "Append environment to native environment"

Now Eclipse uses the same values for the PATH environment variable as your system does. Remember: This is only true for the run configuration you chose.

As already noted in your question, check in Java with:

System.getenv(); 
2
derobert

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

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

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

Это работает для меня, большое спасибо! В моем случае путь для запуска Eclipse - /Applications/Eclipse.app/Contents/MacOS/eclipse. Tsung-Ting Kuo 7 лет назад 0
2
dirk

В качестве альтернативы вы можете просто добавить в /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`. Не могли бы вы объяснить более подробно? pabouk 10 лет назад 0
Вы помещаете символическую ссылку где-нибудь в пути, которая указывает на фактическое местоположение, которое не находится в пути. Я делал это раньше, он работает для отдельных исполняемых файлов, не работает для каталога, полного файлов Jason S 10 лет назад 0
1
kristi

Вы можете изменить глобальный путь к 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
bluearrow

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

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

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

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

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

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