Подтвердить что ты не робот

Mac OS X Lion больше не распознает environment.plist?

Только что установлен Lion сегодня, и моя переменная env PATH больше не устанавливается ~/.MacOSX/environment.plist. Что-то изменилось? Кажется, не может найти информацию об этом или о том, как исправить. Любые идеи?

Здесь содержимое PLIST:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PATH</key>
    <string>/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11/bin:/Users/mdi/bin</string>
</dict>
</plist>
4b9b3361

Ответ 1

Используйте ~/.launchd.conf вместо этого (см. man launchctl).

Подробнее см. этот ответ.

Ответ 2

Сегодня я столкнулся с тем же вопросом. Я позвонил в службу поддержки Apple, и после того, как меня перевели к старшему советнику, а затем к ее руководителю, мне сказали, что они больше не поддерживают environment.plist и что официально не поддерживается метод определения переменных среды в Mac OS 10.7.

Ответ 3

Независимо от того, официально ли Apple поддерживает этот механизм, текущее техническое примечание Техническое Q & A QA1067 по-прежнему является точным. Однако важная оговорка отсутствует: список свойств должен быть в двоичном формате. Xcode 4, когда используется для создания новых списков свойств, испускает файлы, которые находятся в текстовом формате (независимо от типа, указанного в File Inspector). Таким образом, вам нужно либо преобразовать сохраненный файл, используя "plutil":

plutil -convert binary1 environment.plist

или используйте "defaults" для записи нового файла шаблона, который вы можете редактировать в Xcode (который будет соблюдать исходный двоичный формат при сохранении):

defaults write defaults write $HOME/.MacOSX/environment Root "1"

Ответ 4

Странно, потому что здесь он работает безупречно. Я должен был настроить среду JRI для доступа к внутренним R файлам из приложений Java, а обновление .profile было недостаточным для того, чтобы NetBeans ловил все env vars.

Создание файла environment.plist сделал трюк.

Для справки это содержимое файла:

Malessere:~ xxxxx$ cat .MacOSX/environment.plist 
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
   <plist version="1.0">
   <dict>
      <key>DYLD_LIBRARY_PATH</key>
      <string>/Users/xxxxx/lib/jri-2.13</string>
      <key>R_HOME</key>
      <string>/Library/Frameworks/R.framework/Resources</string>
   </dict>
   </plist>

Ответ 5

Сделайте это как brew и создайте символическую ссылку в /usr/local/bin/. Работает отлично для меня и является IMO более унифицированным решением, где все является файлом.

Ответ 6

Меня просто сожгли что-то подобное в Snow Leopard, а затем выяснили, в чем проблема.

Я делал:

$ cd
$ defaults write .MacOSX/environment FOO bar

... но оказывается, что это не так (в моем случае):

$ cd
$ defaults write /Users/ljnelson/.MacOSX/environment FOO bar

То есть, "путь" (это не путь) к вашему домену должен быть полным файловым путем к вашему файлу $HOME/.MacOSX/environment.plist (минус суффикс .plist). Все остальное будет записывать переменные в другой домен (не знаю, где это получилось), по-видимому.

Итак, результат: всегда делайте defaults write /full/path/to/your/.MacOSX/environment VARNAME value; не используйте никаких ярлыков вообще для первого аргумента в подкоманде write.

Ответ 7

Вы можете отредактировать ~/.MacOSX/environment.plist с помощью этого примера $PATH:

defaults write $HOME/.MacOSX/environment PATH "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/local/bin"

Это перепишет ваш ~/.MacOSX/environment.plist

или отредактируйте этот файл:

/etc/paths

чтобы изменить порядок системных переменных.

Ответ 9

[[Я копирую этот мой ответ здесь, потому что это может быть полезно кому-то:]]

Из-за моих собственных исследований я теперь знаю, как установить переменные среды в 7 из 8 разных способов. Я пытался получить envar через приложение, которое я разрабатываю под Xcode. Я установил envars "tracer", используя эти разные методы, чтобы сказать, какие из них попадают в сферу моего приложения. Из нижеследующего вы можете видеть, что редактирование "схемы" в Xcode для добавления аргументов работает, как и "putenv". Что не установлено в этой области: ~/.MACOS/environment.plist, специфичный для приложения plist,.profile и добавление фазы сборки для запуска пользовательского script (я нашел другой способ в Xcode [по крайней мере] установить, но забыл, что я назвал трассировщиком, и не могу найти его сейчас, может быть, это на другой машине....)

GPU_DUMP_DEVICE_KERNEL - 3

GPU_DUMP_TRK_ENVPLIST (null)

GPU_DUMP_TRK_APPPLIST (null)

GPU_DUMP_TRK_DOTPROFILE (null)

GPU_DUMP_TRK_RUNSCRIPT (null)

GPU_DUMP_TRK_SCHARGS - 1

GPU_DUMP_TRK_PUTENV - 1

... с другой стороны, если я заеду в Терминал и скажу "set", кажется, что единственное, что он получает, это тот, что из .profile(я бы подумал, что он заберет environment.plist, и Я уверен, что как только я увижу второй трейсер-энвар в Терминале, так что с тех пор что-то угасало, длинный день....)