Де встановлені змінні системного середовища в Mountain Lion?


46

У Леві (та попередніх випусках) він був у .MacOSX/environment.plist. Після оновлення до 10,8 файл все ще є, але змінні не беруть.

Я також спробував їх додати, /etc/launchd.confі вони з’являться в терміналі, але не в GUI-додатках (як у моїй IDE).


Ви перезавантажилися після зміни /etc/launchd.conf?
nohillside

Я це зробив, і всі змінні в ньому тепер доступні в будь-якому терміналі, але для моєї IDE немає.
Фелікс

Може бути, IDE не піддає вам оточення (Дивіться мою відповідь )? Що це за IDE? це запуск безпосередньо Finder або Spotlight?
halloleo

Відповіді:


22

Я також задав це запитання на Форумах розробників Apple і отримав цю офіційну відповідь.

Змініть Info.plist самого .app, щоб він містив словник "LSEn Environmentment" із змінними середовища.
~ / .MacOSX / environment.plist більше не підтримується.


2
Де це знаходиться?
orome

Було б корисно надати посилання на більш конкретний приклад.
Blaisorblade

1
Оновлення: я спробував змінити цей файл після з'ясування синтаксису (я думаю), але він для мене зовсім не працює.
Blaisorblade

4
Буде Info.plist на додаток у WhatEver.app/Content/Info.plist. Ви можете редагувати його за допомогою XCode. Клацніть "+" у списку властивостей інформації та додайте словник під назвою LSEn Environmentment. Якщо ви правильно введете його, він перейменовує його в змінні середовища. Потім ви натискаєте "+" за допомогою кожної змінної середовища, яку ви хочете додати.
Фелікс

2
Це приємне рішення, але воно більше не працює як Yosemite 10.10.5.
Далмазіо

21

Я знаю, що це давнє питання, але я думав, що хочу зазначити, що в Йосеміті /etc/launchd.confбільше не працює (як це підтверджено на сторінці man). Тож ось альтернатива.

Запустіть редактор AppleScript, введіть таку команду:

do shell script "launchctl setenv variablename value"

(додайте скільки завгодно рядків)

Тепер збережіть (⌘S) як формат файлу: додаток . Нарешті відкрийте Налаштування системиКористувачі та групиЕлементи входу та додайте нову програму.


Зауважте, що це може не працювати ні з іншими програмами, які відкриваються як елементи входу, і, можливо, тими, які ви швидко відкриєте після входу
user151019

Це працювало для мене. Дуже дякую. Це весь день зводить з розуму!
wholladay

2
Схоже, єдине справжнє та універсальне рішення поки що. Але для того, щоб піднятись та стати першою відповіддю, потрібно ще 9 подій. : c
Сардж Борщ

Це працювало для мене на El Capitan. Як зазначав @Mark вище, є проблеми із замовленням (наприклад, відновлені програми можуть мати, а можуть і не мати оточення), але після входу в систему це працює так, як ви очікували. Тобто програми, запущені з Spotlight або Dock, мають правильне середовище.
Алек Томас

@Mark Ви можете спробувати цю відповідь , використовуючи Агент запуску. У моєму випадку Агент запуску запускається після елементів входу, тому я переміщую цільову програму (наприклад, Eclipse) з елемента входу до агента запуску, так що вони будуть запущені після цієї спеціальної змінної середовища налаштування програми.
Франклін Ю

10

Як ви виявили, використання файлу Environment.plist більше не дотримується, змінні, що зберігаються в Info.plist як рядки LSEnvironment , встановлюються лише запуском .

Ви не можете залежати від них, щоб встановити загальну змінну середовища, яку встановить термінал, якщо ви будете викликати програму безпосередньо з терміналу / оболонки. Хороша новина полягає в тому, що open -aкоманда запускає запуск, щоб зробити запуск, тому змінні будуть встановлені послідовно для середовища програми, якщо не для локальної середовища оболонки.


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, але він працює для мене як у терміналах, так і в GUI-програмах. Детальніше.

Зауважте, це не переживає при перезавантаженні. Ось спосіб це виправити .


3
Це досить довга сторінка, на яку ви посилаєтесь тут. Де саме знаходиться відповідна частина? Чи можете ви включити його безпосередньо у свою відповідь, щоб полегшити всім?
nohillside

2
На жаль, я вважаю, що я включив більше фрагменту в цю URL-адресу. фіксований.
ryan

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