今天刚刚安装了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平台上使用了