Як встановити PATH для запущених програм Finder


70

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

Мабуть, .MacOSX/environment.plist раніше це було, але це не працює в Леві.

Як я можу встановити PATHпрограми, запущені Finder?


Ви впевнені, що прийняте рішення працює на 10.8?
sorin

1
@SorinSbarnea (я знаю, що це старе, але) я можу переконатися, що прийнята на даний момент відповідь працює для мене в OS X 10.8.3, коли я також використовую запропонований перезапуск дока . (Я встановлюю іншу змінну середовища, але, $PATHякщо це не має значення.)
Calrion,

див. також < stackoverflow.com/questions/829749/… >. Це майже дублікат.
Філіп Кунц

Відповіді:


38

Якщо ви перебуваєте на 10,7, а не на 10,8, рішення нижче працює добре:

У мене була така ж проблема із затемненням, але тепер я додав, наприклад, наступне до свого, .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)).

Примітка: Зміна запуску PATH не набере чинності, поки док-станція не буде "перезапущена". Новий процес Dock автоматично розпочнеться після того, як поточний буде вбито командою:

killall Dock

1
Я закінчив використовувати: "startctl setenv PATH $ PATH". Додавання до існуючого шляху startctl через "$ p" закінчується повторенням шляху кожного разу, коли ви відкриваєте оболонку.
Кофеїнова кома

4
Це не працює на OS X 10.8 - спробували з Eclipse та IntelliJ - запущений set|grep PATHз них завжди повернетьсяPATH=/usr/bin:/bin:/usr/sbin:/sbin
sorin

1
Не працює і для мого (10.8.1)
nohillside

4
Ви можете спробувати перезавантажити док після запуску launchctl: osascript -e 'tell app "Dock" to quit'. Це, здавалося, виправдало мене.
Іван Андрус

2
Це працює для мене в 10.12, але лише як одноразове. Після перезавантаження машини ефекти втрачаються.
Dover8

19

Щоб відповісти на запитання до вашої «нової» проблеми, я вирішив написати ще одну відповідь - адже це легше пояснити зразками.

Один із способів завантажувати змінні середовища під час запуску вашого інструменту (IDE) вибору - це те, як це можна зробити при затемненні - я думаю, що у вашому інструменті (IDE) теж має бути схожа структура.

Як це можна зробити в затемненні - https://stackoverflow.com/questions/829749/launch-mac-eclipse-with-environment-variables-set

(трохи переписаний про змінні середовища)

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

Відкрийте eclipse.sh у текстовому редакторі та введіть наступний вміст:

#!/bin/sh

. ~/.bash_profile

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

exec "`dirname \"$0\"`/eclipse" $@

У Терміналі встановіть виконуваний прапор сценарію оболонки 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, слід встановити змінні середовища.


+1 для чіткого і точного пояснення, а також за те, що через шість років це все ще працює з Високою Сьєррою, 10.13.x.
dgnuff

16

В OS X 10.10 Yosemite я використав цю команду:

sudo launchctl config user path <my path setting>

Будьте в курсі, що його встановлює запуск PATH для всіх користувачів . Це добре працювало для мого використання. Зауважте, що вам буде запропоновано перезавантажити машину, щоб вплинути на ефекти.


Це, мабуть, не впливає на змінну середовища PATH додатків, які знову відкриваються при вході в систему (які були відкриті під час вимкнення).
Brecht Machiels

4
Ця відповідь спрацювала на мене. Зокрема, щоб отримати доступ до виконавчого файлу, керованого Brew, мені довелося sudo launchctl config user path /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbinперезавантажити.
JP

Тут найкраща відповідь для додавання / usr / local / bin для додатків на базі Homebrew. Люди, будь ласка, проголосуйте за цю відповідь! Він також працює в 10.11 та 10.12 (не перевірений в 10.13 сам). Не потрібно возитися з environment.plistбільшості випадків.
Марк Едінгтон

це працювало для мене, поки прийнятої відповіді не було
MichaelChirico

11

На Mountain Lion все /etc/pathsта /etc/launchd.confредагування не впливає!

Форуми розробників Apple кажуть:

"Змініть Info.plist самого .app, щоб він містив словник" LSEnvironment "зі змінними середовища.

~ / .MacOSX / environment.plist більше не підтримується. "

Тож я безпосередньо редагував додаток Info.plist(клацніть правою кнопкою миші на "AppName.app" (в даному випадку SourceTree), а потім " Show package contents")

Показати зміст упаковки

і додав нову пару ключів / диктантів під назвою:

<key>LSEnvironment</key>
<dict>
     <key>PATH</key>
     <string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/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 )

введіть тут опис зображення

тепер додаток (в моєму випадку SourceTree) використовує заданий шлях і працює з git 1.9.3 :-)

PS: Звичайно, ви повинні налаштувати запис "Шлях" під ваші конкретні потреби шляху.


Це правда? Я бачу безліч дописів з суперечливою інформацією, деякі з яких явно старі, але деякі з них здаються недавніми. У мене навіть немає (10.8.2) /etc/launchd.conf. Імовірно, навіть якщо правила не стверджують , що додатки повинні використовувати свої Info.plist файли для шляхів, вони можуть по- , як і раніше використовувати інші файли - /etc/launchd.conf, /etc/paths/або /etc/paths.d/*, або `~ / .MacOSX / environment.plist. Чи безпечно сказати тоді, що на практиці шляхи для додатків GUI в Mountain Lion можуть бути встановлені в будь-якому з цих файлів?
orome

2
Цей Info.plist був єдиним, що працювало для мене, після спроби lauchd.conf тощо / доріжок тощо з моїми Maverics і затемненням. Насправді це не спрацювало також відразу, вам потрібно запам’ятати дві речі: 1. запустити так, /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.appяк зазначено в іншій відповіді, після зміни списку і 2. додайте туди повний шлях , ви не можете використовувати існуючі PATH, як у ваших сценаріях профілю.
JaakL

Це працює на Сьєррі (10.12). Але lsregisterкоманду все-таки потрібно запустити , як зазначає @JaakL.
Аластер Гаррісон

1

На Гірському Леві (10.8.4) поводиться $PATHспеціально якось. launchctl setenv PATH /your/path:/hereне впливає на $PATHекземпляри Terminal.app або Emacs.app, які згодом запускаються з док-станції або з Finder (тоді як це launchctl setenv SPONG fooпрацює чудово). Також $HOME/.launchd.confне працює. /etc/launchd.confце єдиний спосіб, коли я встановив, що PATH встановлений правильно скрізь. На жаль, не можна використовувати такі формати, як $HOMEтам, тому всі користувачі мого ноутбука мають /Users/nb/binсвій $PATH. Це тільки я, тому мені все одно.


Ви повинні виявити, що процес Terminal набирає PATHзадане вами значення, але: коли ви створюєте новий термінал, він запускає оболонку входу, яка - якщо ви використовуєте bash - виконує /etc/profile, яка ініціалізується PATHдо значення, поверненого з /usr/libexec/path_helper. Якщо ви вибрали Shell> New Command… і запустили env(не в оболонці), ви повинні знайти PATHце значення, яке ви встановили за допомогою startd.
Chris Page

-1

Спробуйте встановити шлях у своєму ~ / .profile чи ~ / .bash_profile або ~ / .zprofile (для zsh). Це працювало для мене з VimR - він не читав PATH при запуску з дока, але працював, коли запускався з терміналу. До речі, я працював на OSX 10.11.

У мене недостатньо хорошого вирішення цього питання, щоб дати вам велике пояснення, чому це працює, в Інтернеті є багато пояснень щодо різних файлів конфігурації та того, що вони роблять: https://stackoverflow.com/questions/415403/ що-різниця-між-bashrc-bash-профіль-і-середовищем

Також див. Подібну дискусію тут: https://stackoverflow.com/questions/3344704/path-variable-not-properly-set-in-gvim-macvim-when-it-is-opened-from-the-finder/ 24542893 # 24542893


Питання задає питання, як це зробити для додатків, запущених з Doc, що є тим самим, як запуск з Finder, на який ви говорите, що ваша відповідь не працює - і ми можемо точно пояснити, чому це працює / не працює
user151019

-3

На Mac OS X 10.8.4, Mountain Lion, середовище шляху включає шляхи, перелічені в цьому файлі:

/etc/paths

Ви можете редагувати цей файл за допомогою інструменту командного рядка, наприклад, vimза допомогою наступної команди:

sudo vim /etc/paths
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.