Mac OS X Lion不再识别environment.plist



今天刚刚安装了Lion,我的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>

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

使用~/.launchd.conf相反(见man launchctl)。

请参阅此回答了解详细信息。

无论Apple是否正式支持此机制,当前的技术说明Technical Q&A QA1067仍然是准确的。但是,缺少一个重要的警告:属性列表需要采用二进制格式。Xcode 4,当用来创建新的属性列表时,会生成文本格式的文件(不管文件检查器中指定的类型是什么)。因此,您要么需要使用'plutil':

转换保存的文件:
plutil -convert binary1 environment.plist

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

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

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

创建环境。

作为参考,这个文件的内容:

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>

像brew一样在/usr/local/bin/中创建一个符号链接。完美地为我工作,是IMO一个更像unix的解决方案,一切都是一个文件。

我只是被Snow Leopard中类似的东西激怒了,然后才知道问题出在哪里。

I was doing:

$ 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子命令的第一个参数,不要使用任何快捷方式。

当前 UI用户启动的所有进程设置环境变量的现代方法是通过启动代理。

使用AutoDesk文档中的示例,在~/Library/LaunchAgents/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>Label</key>
    <string>my.startup</string>
    <key>ProgramArguments</key>
    <array>
    <string>sh</string>
    <string>-c</string>
    <string>launchctl setenv RV_OS_PATH_OSX /volumes/zdisk;
launchctl setenv RV_OS_PATH_WINDOWS Z:;</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

默认情况下,Mac OS X(10.7.4及以上)不再支持。参见http://support.apple.com/kb/TS4267

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

由于我自己的探索,我现在知道如何设置环境变量的8种不同的方法中的7种。我在Xcode下开发了一个应用程序。我使用这些不同的方法设置"跟踪器"羡慕器,以告诉我哪些方法将其放入我的应用程序范围。从下图中,你可以看到在Xcode中编辑"scheme"来添加参数是有效的,就像"putenv"一样。什么没有把它设置在这个范围:~/. macos/environment。plist,应用程序特定的plist, .profile,并添加一个构建阶段来运行自定义脚本(我在Xcode中找到了另一种方法来设置一个,但忘记了我所谓的跟踪器,现在找不到它;可能在另一台机器上....)

GPU_DUMP_DEVICE_KERNEL is 3

GPU_DUMP_TRK_ENVPLIST is (null)

GPU_DUMP_TRK_APPPLIST is (null)

GPU_DUMP_TRK_DOTPROFILE is (null)

GPU_DUMP_TRK_RUNSCRIPT is (null)

GPU_DUMP_TRK_SCHARGS is 1

GPU_DUMP_TRK_PUTENV is 1

…另一方面,如果我进入终端并说"设置",似乎它得到的唯一一个是从。profile(我本以为它会选择环境)。plist也是,我确信一旦我做了在Terminal中看到第二个跟踪器嫉妒,所以从那时起可能有些事情变得不稳定;漫长的一天....)

你可以用这个$PATH的例子来编辑你的~/.MacOSX/environment.plist:

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

我最近打包了Xcode的运行脚本阶段使用的工具,并将它们放在$HOME/bin中。我的bash shell的PATH环境变量包含了这个,所以我假设Xcode也会。

它从来没有工作过,我发现了像这里这样的问题。

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

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

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

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

我的工具现在可以在Xcode平台上使用了

最新更新