Как установить PATH для приложений, запускаемых Finder

Приложения, запущенные с помощью Finder, похоже, не уважают PATH, как указано в .bash_profile. Поэтому, когда я пытаюсь запустить код из IDE (Intellij), у меня больше нет доступа к программам в /usr/local/bin, который обычно добавляется к моему пути в терминале.

По-видимому .MacOSX /environment.plist использовался для , чтобы сделать это, но он больше не работает в Льве.

Как установить .MacOSX/environment.plist для приложений, запускаемых Finder?

63 голоса | спросил Caffeine Coma 19 Maypm12 2012, 15:10:51

7 ответов


32

Если вы используете 10.7, а не 10.8, то решение ниже работает хорошо:

У меня была та же проблема с eclipse, но теперь я добавил, например. следующее в мой .bash_profile, а затем он сработал.

export PATH=some_path:another_path
launchctl setenv PATH $PATH

Если вы хотите оставить исходный путь неповрежденным, используйте

p=$(launchctl getenv PATH)
launchctl setenv PATH /my/new/path:$p

вместо этого (или просто launchctl setenv PATH /my/new/path:$(launchctl getenv PATH)

).

Примечание. Изменение параметра launchctl PATH не будет действовать до тех пор, пока Dock не будет перезапущен. Новый процесс Dock автоматически запустится после того, как текущий будет убит командой:

killall Dock
ответил Rene Larsen 19 Maypm12 2012, 15:54:41
17

Чтобы ответить на ваш вопрос на «новую» проблему, я решил написать еще один ответ, потому что его проще объяснить с помощью образцов.

Один из способов загрузить переменные среды при запуске вашего инструмента (IDE) по выбору - это то, что это можно сделать с помощью eclipse - я думаю, что в вашем инструменте также должна быть аналогичная структура.

Как это сделать в eclipse - https://stackoverflow.com /вопросы /829749 /ответно-макинтош-затмение-с-переменные окружения набора

(немного переписанная о переменных среды)

Создайте пустой текстовый файл с именем "eclipse.sh" в каталоге пакета приложений Eclipse /Applications/eclipse/Eclipse.app/Contents/MacOS

Откройте eclipse.sh в текстовом редакторе и введите следующее содержимое:

#!/bin/sh

. ~/.bash_profile

logger "`dirname \"$0\"`/eclipse"

exec "`dirname \"$0\"`/eclipse" [email protected]

В терминале установите исполняемый флаг сценария оболочки eclipse.sh, т. е.:

chmod +x /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.sh

Откройте Eclipse.app Info.plist и измените значение для ключа CFBundleExecutable из eclipse в eclipse.sh.

MacOS X не обнаруживает автоматического изменения Info.plist Eclipse.app. Поэтому вам необходимо принудительно обновить базу данных LaunchService в терминале с помощью команды lsregister:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app

При следующем запуске Eclipse.app из Dock или из Finder должны быть установлены переменные среды.

ответил Rene Larsen 20 Maypm12 2012, 18:39:45
10

В Mountain Lion все изменения /etc/paths и /etc/launchd.conf не имеют никакого эффекта!

Форумы разработчиков Apple говорят:

  

"Измените Info.plist самого .app, чтобы он содержал" LSEnvironment "   словарь с переменными среды, которые вы хотите.

     

~ /.MacOSX /environment.plist больше не поддерживается. "

Итак, я прямо редактировал Info.plist приложения (щелкните правой кнопкой мыши на «AppName.app» (в этом случае SourceTree), а затем «Show package contents»)

Показать содержимое пакета

и добавлена ​​новая пара ключей /dict:

<key>LSEnvironment</key>
<dict>
     <key>PATH</key>
     <string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/[email protected]/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string>
</dict>

(см. Документация LaunchServicesKeys в Apple )

введите описание изображения здесь>> </p>

<p> теперь приложение (в моем случае SourceTree) использует данный путь и работает с git 1.9.3: -) </p>

<p> PS: Конечно, вам нужно настроить запись Path для вашего конкретного пути. </p></body></html>

ответил Flori 24 Jpm1000000pmThu, 24 Jan 2013 16:34:08 +040013 2013, 16:34:08
9

В OS X 10.10 Yosemite я использовал эту команду:

sudo launchctl config user path <my path setting>

Имейте в виду, что он устанавливает starttl PATH для всех пользователей . Это хорошо работало для моего случая использования. Обратите внимание, что вас попросят перезагрузить компьютер, чтобы эффекты удержались.

ответил brki 31 J000000Friday15 2015, 11:10:23
1

В Mountain Lion (10.8.4), $PATH рассматривается как-то специально. launchctl setenv PATH /your/path:/here не влияет на $PATH в экземплярах Terminal.app или Emacs.app, которые затем запускаются из Dock или из Finder (тогда как launchctl setenv SPONG foo отлично работает). Также $HOME/.launchd.conf не работает. /etc/launchd.conf - это единственный способ найти правильный набор PATH везде. К сожалению, нельзя использовать envars, такие как $HOME, поэтому все пользователи моего ноутбука имеют /Users/nb/bin на их $PATH. Это только я, поэтому мне все равно.

ответил Nick Barnes 26 J0000006Europe/Moscow 2013, 19:22:27
-1

Попробуйте установить путь в ~ /.profile или ~ /.bash_profile или ~ /.zprofile (для zsh). Это работало для меня с VimR - он не читал PATH при запуске с док-станции, но работал при запуске с терминала. Кстати, я работал на OSX 10.11.

У меня нет достаточной справки по этому поводу, чтобы дать вам отличное объяснение, почему оно работает, есть много объяснений в Интернете о различных файлах конфигурации и том, что они делают: https://stackoverflow.com/questions/415403/whats- разностной-между-Bashrc-баш-профиль-и-среда

Также см. аналогичное обсуждение здесь:

ответил adampasz 23 +03002015-10-23T01:20:11+03:00312015bEurope/MoscowFri, 23 Oct 2015 01:20:11 +0300 2015, 01:20:11
-3

В Mac OS X 10.8.4, Mountain Lion, среда пути включает в себя пути, перечисленные в этом файле:

/etc/paths

Вы можете отредактировать этот файл с помощью инструмента командной строки, например vim, используя следующую команду:

sudo vim /etc/paths
ответил user1814739 16 J000000Tuesday13 2013, 07:42:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132