Где в Mountain Lion установлены системные переменные среды?

46

В Lion (и предыдущих выпусках) это было в .MacOSX/environment.plist. После обновления до 10.8 файл все еще там, но переменные не принимают.

Я также попытался добавить их в, /etc/launchd.confи они будут отображаться в терминале, но не в приложениях с графическим интерфейсом (как моя IDE).

Феликс
источник
Вы перезагружались после смены /etc/launchd.conf?
холме
Я сделал, и все переменные в нем теперь доступны в любом терминале, но не представлены для моей IDE.
Феликс
Может быть, IDE не раскрывает вам окружающую среду (см. Мой ответ )? Что это за IDE? Это запускается непосредственно Finder или Spotlight?
Привет,

Ответы:

22

Я задал этот вопрос и на форумах разработчиков Apple, и получил официальный ответ.

Измените Info.plist самого .app, чтобы он содержал словарь «LSEnvironment» с необходимыми переменными среды.
~ / .MacOSX / environment.plist больше не поддерживается.

Феликс
источник
2
Где это находится?
orome
Было бы полезно предоставить ссылку на более конкретный пример.
Blaisorblade
1
Обновление: я попытался изменить этот файл после выяснения синтаксиса (я думаю), но он не работает для меня вообще.
Blaisorblade
4
Для каждого приложения будет создан Info.plist в WhatEver.app/Content/Info.plist. Вы можете редактировать его с помощью XCode. Нажмите «+» в списке свойств информации и добавьте словарь под названием LSEnvironment. Если вы введете его правильно, он переименует его в переменные окружения. Затем вы нажимаете «+» для каждой переменной среды, которую вы хотите добавить.
Феликс
2
Это хорошее решение, но оно больше не работает с Yosemite 10.10.5.
Далмацио
21

Я знаю, что это старый вопрос, но я подумал, что хотел бы указать, что в Yosemite /etc/launchd.confбольше не работает (что подтверждается справочной страницей). Так что вот альтернатива.

Запустите редактор AppleScript, введите команду, подобную этой:

do shell script "launchctl setenv variablename value"

(добавьте столько строк, сколько хотите)

Теперь сохраните (⌘S) как Формат файла: Приложение . Наконец, откройте « Настройки системы» → « Пользователи и группы» → « Элементы входа» и добавьте новое приложение.

ruario
источник
Обратите внимание, что он может не работать с другими приложениями, которые открываются как элементы входа в систему, и, возможно, с теми, которые вы открываете быстро после входа в систему
Mark
Это сработало для меня. Огромное спасибо. Это сводило с ума весь день!
wholladay
2
Похоже, пока единственное реальное и универсальное решение. Но ему нужно еще 9 голосов, чтобы подняться и стать первым ответом. : c
Sarge Borsch
Это сработало для меня на Эль-Капитане. Как отмечено выше @Mark, существуют проблемы с упорядочением (например, возобновленные приложения могут иметь или не иметь среду), но после входа в систему это работает, как и следовало ожидать. То есть приложения, запущенные из Spotlight или Dock, имеют правильную среду.
Алек Томас
@Mark. Вы можете попробовать этот ответ , используя Launch Agent. В моем случае Launch Agent запускается после Элементов входа в систему, поэтому я перемещаю целевое приложение (например, Eclipse) из Элемента входа в Launch Agent, чтобы они запускались после этих специальных переменных среды установки приложения.
Франклин Ю
10

Как вы обнаружили, больше не используется файл environment.plist, переменные, хранящиеся в Info.plist в виде строк LSEnvironment, устанавливаются только launchd .

Вы не можете рассчитывать на то, что они установят общую переменную среды, которую установит терминал, если вы будете вызывать вашу программу непосредственно из терминала / оболочки. Хорошей новостью является то, что open -aкоманда запускает launchd для запуска, поэтому переменные будут установлены согласованно для среды приложения, если не для среды локальной оболочки.

bmike
источник
4

Установка переменных окружения /etc/launchd.conf- это то, что нужно: каждое приложение, запущенное после перезагрузки локальными оболочками, Finder или Spotlight, наследует эти переменные - я тщательно протестировал это с Mountain Lion 10.8.3.

2 предостережения:

halloleo
источник
1
/etc/launchd.confбольше не поддерживается со времен Yosemite. См. Apple.stackexchange.com/questions/106355/…
Франклин Ю
3

Попробуй launchctl setenv NAME VALUE. Я не знаю, если / чем он отличается от редактирования launchd.conf, но он работает для меня как в терминале, так и в приложениях с графическим интерфейсом. Подробнее

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

Райана
источник
3
Это довольно длинная страница, на которую вы ссылаетесь. Где именно соответствующая часть? Не могли бы вы включить это прямо в свой ответ, чтобы всем было легче?
холме
2
Ой, хорошая мысль, я подумал, что я включил в этот URL больше фрагмента. исправлено.
Райан
1
Способ выживания через перезагрузку, данный там, использует environment.plist, который перестал работать под Lion
Mark