在OSX Yosemite中,为什么我可以为GUI应用程序设置许多环境变量,却不能设置特定的变量PATH
在解决了Mavericks发行版中的OSX PATH问题之后,问题又在优胜美地再次出现!!! 因此,我想模仿launch.conf新版Mac OSX 10.10 Yosemite中的旧功能,以便在GUI应用程序(例如Carbon Emacs或RStudio)中提供PATH环境变量。我使用了stackoverflow用户ursa的好主意来设置一个shell脚本,该脚本通过配置环境变量launchctl。(请参阅此处的 stackoverflow答案。)这适用于大多数环境变量,但不适用于PATH变量。 1.我做了什么? 首先,我将 /etc/environment.rc脚本编写如下: launchctl setenv PATH /Users/halloleo/bin:/usr/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin launchctl setenv JAVA_HOME /usr/local/jdk1.7 launchctl setenv ENVIRONMENT_RC "yes" 然后,我创建了plists用于launchd(下面的附录中的这些脚本和其他提到的脚本的列表)。然后我用 $ sudo launchctrl load ... 然后,我path_helper在Shell初始化文件/etc/配置文件中禁用了该实用程序,以便它不会覆盖environment.rc设置。最后,我重启了机器。 2.有什么作用? 当我启动终端新的环境变量JAVA_HOME,并ENVIRONMENT_RC根据设定environment.rc的,但路径设置为 / usr / bin:/ bin 为了确保没有任何bash初始化文件妨碍我编写一个小python脚本(也在附录中)来显示当前环境中的变量,因此我直接通过双击Platypus包装器执行此操作。再次设置新变量,而PATH为系统默认值。 那么为什么要设置其他变量,但不能设置PATH变量呢?我该如何统一解决呢? 更新: 这种情况令人非常困惑:bashTerminal或Emacs中的shell(至少)会选择您通过设置的PATH launchctl,但其他GUI应用程序不会这么做。例如,通过Platypus直接调用的上述最小python脚本不会显示您的自定义路径。甚至Emacs本身也不知道正确的PATH:例如,当您发出Emacs命令时,您会注意到这一点M-x ispell-buffer;ispell如果仅在您的自定义路径上,找不到emacs尝试调用的unix工具。 附录 net.halloleo.environment.plist,启动的配置文件位于/Library/LaunchDaemons/: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist …