Где в 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) как Формат файла: Приложение . Наконец, откройте « Настройки системы» → « Пользователи и группы» → « Элементы входа» и добавьте новое приложение.


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


4

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

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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.