Як змінити змінну середовища PATH на OS X 10.8 Mountain Lion, яка буде видима для GUI-програм? [дублікат]


14

Я спробував усі методи, про які я чув, щоб встановити змінні середовища на OS X 10.8, але жоден з них, здається, не працює.

Для тестування запустіть скрипт bash з додатка gui, наприклад Eclipse або IntelliJ IDEA.

#!/bin/bash
set|grep PATH

Тести, які я перевірив і які не працюють навіть після перезавантаження:

  • /etc/paths і /etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist (двійковий список, зроблений у відповідності з рекомендаціями)
  • запускаючи launchctl setenv PATH $PATHз командного рядка, це повинно було оновити PATH для додатків GUI, принаймні для поточного сеансу. Вгадайте що, ніяких змін.

Здається, PATH завжди є PATH=/usr/bin:/bin:/usr/sbin:/sbinдля GUI-додатків.


Чи добре з рішенням, яке встановлює шлях bash, чи вам дійсно потрібно змінити значення базового шляху для запуску для всіх процесів?
bmike

Мені потрібно змінити PATH, який використовується програмами GUI, для терміналу / bash / ... У мене вже є великий набір робочих рішень.
sorin

Я не знаю, чому eclipse та інші не просто підтримують змінні середовища середовища виконання, тому кожному розробнику Java на Mac не потрібно турбуватися про встановлення шляху або пошуку бажаних змінних у кожному проекті.
bmike

відповідь дивіться тут: apple.stackexchange.com/questions/51677/…
Флорі

Відповіді:


8

Завдяки Mountain Lion /etc/launchd.conf- це те, де вам слід встановити шлях додатків GUI. Пам'ятайте, що це не файл сценарію; він підтримує лише launchctlкоманди, тому вам слід написати щось на зразок:

setenv PATH /new/path:/usr/bin:/bin:/usr/sbin:/sbin

Зауважте також, що він не підтримує підстановки змінної середовища оболонки (наприклад $PATH), тому вам доведеться встановити кожен шлях, який ви хочете включити. Хороша ідея зберегти оригінальні контури, які ви згадали ( /usr/bin:/bin:/usr/sbin:/sbin).

Щоб зміни набрали чинності, вам доведеться перезавантажити файли після зміни (або створення файлу).


Це працювало для мене в 10.8.2 для встановлення PATH, який можна було використовувати з Keyboard Maestro.
TJ Luoma

На сторінці чоловіка написано, що ви можете використовувати $ HOME / .launchd.conf, але це не спрацювало для мене. Використовуючи /etc/launchd.conf. Я 10.8.4
пед

Для мене це не працює:-bash: setenv: command not found
Колас

Якщо хтось був плутаний, як Колас, setenvце launchctlкоманда, тож ви його використовуєте як launchctl setenv.
Джон Шиер

3

Він працює, якщо ви зателефонували до програми GUI з терміналу:

PATH=/this/is/kind/of/crazy:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /Applications/Automator.app/Contents/MacOS/Automator 

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

Не дуже приємно чи комфортно, але це виконує роботу, якщо потрібно.


Незабаром НЕ ШЛЯХ. Я не бажаю цього робити, це спрацює лише іноді. Додаток можна також запустити, натиснувши на файл.
sorin

2
Як я вже сказав, це не дуже приємно, але може працювати, поки Apple не виправить проблему (тому що це може бути можливим із запуском).
nohillside

2

Я приготував ще одне рішення, натхнене патрицею одного тут , що, сподіваюся, є трохи менш болісним. Відкрийте Automator, виберіть програму як цільову та виберіть Execute Shell script(як ні, німецькою мовою це "Shell-Skript ausführen", як видно вище) як дію. У сценарії просто введіть

launchctl setenv FOO1 bar1
[...]
launchctl setenv FOOn barn
open -a YourApplicationHere

Потім збережіть все, куди ви хочете, і якщо вам потрібно запустити YourApplicationHere , відкрийте натомість створене "додаток автоматизатора".

Я перевірив це Terminalяк " YourApplicationHere" , і побачив, launchctl exportщо FOO дійсно встановлений на плані . Я сподіваюся, що це працює і для інших.

Нарешті, якщо ви використовуєте це рішення для змінних вашого середовища, замість того, щоб вводити launchctlматеріал у скрипті оболонки, ви можете просто зателефонувати /Users/Shared/conflaunchd.sh(який потрібно скласти спочатку разом із файлом, що описує змінні).


-1

Нібито, launchctlнадає PATHGUI Apps. Щоб встановити шлях до шляху оболонки, додайте наступне до файлу rc оболонки після встановлення вашого шляху:

launchctl setenv PATH $PATH

1
На жаль, це не працює :-(
nohillside


Ми дозволяємо відповіді, які сумлінно намагаються вирішити питання. Ми навіть допускаємо неправильні відповіді і дозволяємо голосуванню говорити за правильність. Коментувати, не роблячи це особистим, це найкращий спосіб пробити дірку в несправній аргументації, а не відлякувати спроб відповісти.
bmike
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.