Mac OS X Lion不再识别environment.plist?

时间:2011-07-21 01:31:03

标签: macos osx-lion

今天刚刚安装了Lion,我的PATH env变量不再由〜/ .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>

10 个答案:

答案 0 :(得分:15)

我今天遇到了同样的问题。我打电话给Apple支持,在升级为高级顾问后,然后告诉她的主管,我被告知他们不再支持environment.plist,并且在Mac OS 10.7中没有正式支持的方法来定义环境变量。

答案 1 :(得分:14)

改为使用~/.launchd.conf(请参阅man launchctl)。

有关详细信息,请参阅this answer

答案 2 :(得分:10)

Apple是否正式支持此机制,目前的技术说明Technical Q&A QA1067仍然准确无误。但是,缺少一个重要的警告:财产清单需要采用二进制格式。 Xcode 4在用于创建新的属性列表时,会发出文本格式的文件(无论文件检查器中指定的类型如何)。所以你需要使用'plutil'来转换保存的文件:

plutil -convert binary1 environment.plist

或使用'defaults'写出一个可以在Xcode中编辑的新模板文件(保存时将遵循原始二进制格式):

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

答案 3 :(得分:1)

很奇怪,因为它在这里运作完美无缺。我必须设置一个JRI环境来从Java应用程序访问R内部,并且更新.profile还不足以让NetBeans捕获所有环境变量。

创建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>

答案 4 :(得分:1)

像brew一样,在/ usr / local / bin /中创建一个符号链接。对我来说非常适合,IMO是一个更像unix的解决方案,一切都是文件。

答案 5 :(得分:1)

我刚被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子命令的第一个参数使用任何快捷方式。

答案 6 :(得分:0)

您可以使用~/.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

更改系统变量的顺序。

答案 7 :(得分:0)

默认情况下,Mac OS X(10.7.4及更高版本)不再支持它。见http://support.apple.com/kb/TS4267

答案 8 :(得分:0)

[[我把我的这个答案复制到这里,因为它可能对某人有帮助:]]

由于我自己的探索,我现在知道如何以8种不同方式中的7种设置环境变量。我试图让一个envar进入我在Xcode下开发的应用程序。我使用这些不同的方法设置“tracer”envars来告诉我哪些方法将它纳入我的应用程序的范围。从下面,您可以看到在Xcode中编辑“方案”以添加参数,“putenv”也是如此。没有在该范围内设置的内容:〜/ .MACOS / environment.plist,特定于应用程序的plist,.profile,以及添加构建阶段以运行自定义脚本(我在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

另一方面,如果我进入终端并说“设置”,它似乎唯一得到的是来自.profile的那个(我原本以为它也会选择environment.plist,并且我确信,一旦我做了在终端看到第二个示踪器envar,那么从那以后可能会出现问题;漫长的一天....)

答案 9 :(得分:0)

我最近打包了Xcode的Run Script Phase使用的工具,并将它们放在$ HOME / bin中。我的bash shell的PATH环境变量包含了这个,所以我假设Xcode也是如此。

它从来没有奏效,我发现了像这里的问题。

我从Xcode调用的脚本(echo $ PATH)中打印了PATH变量,以查看PATH变量的设置。

幸运的是,其中一条路径, /Applications/Xcode.app/Contents/Developer/usr/local/bin从未使用过。

这是我的解决方案。我创建了一个从上面目录到$ HOME / bin的符号链接。

导航到/Applications/Xcode.app/Contents/Developer/usr/local并执行sudo ln -s $ HOME / bin bin。

我的工具现在可供Xcode平台使用。