如何将PATH环境变量更改为对OS应用程序可见的OS X 10.8 Mountain Lion?[重复]


14

这个问题已经在这里有了答案:

我尝试了所有听说过的在OS X 10.8上设置环境变量的方法,但它们似乎都不起作用。

要进行测试,请从Eclipse或IntelliJ IDEA之类的gui应用程序内部运行bash脚本。

#!/bin/bash
set|grep PATH

我测试过的东西即使重启后也无法正常工作

  • /etc/paths/etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist (根据建议制作二进制plist)
  • launchctl setenv PATH $PATH从命令行运行,应该至少为当前会话更新GUI应用程序的PATH。猜猜是什么,没有变化。

似乎PATH始终PATH=/usr/bin:/bin:/usr/sbin:/sbin适用于GUI应用程序。


您是否可以使用设置bash路径的解决方案,还是真的需要更改所有进程的基本路径的launchd值?
bmike

我需要更改GUI应用程序使用的PATH,用于终端/ bash /...。我已经有了很多有效的解决方案。
索林2012年

我不知道为什么eclipse和其他项目不仅仅支持运行时环境变量,因此Mac上的每个Java开发人员都不必担心在每个项目中设置路径或寻找所需变量的问题。
bmike

Answers:


8

在Mountain Lion /etc/launchd.conf中,应在其中设置GUI应用程序路径。请记住,这不是脚本文件。它仅支持launchctl命令,因此您应该编写如下内容:

setenv PATH /new/path:/usr/bin:/bin:/usr/sbin:/sbin

还要注意,它不支持shell环境变量替换(例如$PATH),因此您必须设置要包括的每个路径。保持您提到(/usr/bin:/bin:/usr/sbin:/sbin)的原始路径是一个好主意。

更改(或创建)文件后,您必须重新启动才能使更改生效。


这在10.8.2中对我有用,它设置了可与Keyboard Maestro一起使用的PATH。
TJ Luoma

手册页说您可以使用$ HOME / .launchd.conf,但对我而言不起作用。使用/etc/launchd.conf。我上10.8.4
pedz

这对我不起作用:-bash: setenv: command not found
Colas 2013年

如果有人像Colas 这样感到困惑,那setenv是一个launchctl命令,因此您可以像那样使用它launchctl setenv
乔恩·希尔

3

如果您从终端调用GUI应用程序,它将起作用:

PATH=/this/is/kind/of/crazy:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /Applications/Automator.app/Contents/MacOS/Automator 

在此处输入图片说明

不太好或不太舒适,但是在需要时可以完成工作。


很快,没有办法。我不愿意这样做,它只会在某些时候起作用。当您单击文件时,也可以启动该应用程序。
索林2012年

2
就像我说的那样,它并不是很好,但是可能要等到Apple解决此问题后才能解决(因为launchctl 应该可以解决)。
nohillside

2

我从这里祖父那里得到了启发,提出了另一种解决方案,希望可以减轻痛苦。打开Automator,选择一个应用程序作为目标,然后选择Execute Shell script(或任何称为“ Shell-Skriptausführen”的德语)作为操作。在脚本中,只需键入

launchctl setenv FOO1 bar1
[...]
launchctl setenv FOOn barn
open -a YourApplicationHere

然后将整个内容保存在任何位置,如果需要运行YourApplicationHere,请打开创建的“自动应用程序”。

我测试了这个TerminalYourApplicationHere,并看到了launchctl exportFOO确实设置为禁止。我希望它也对其他人有用。

最后,如果将此解决方案用于环境变量,则无需launchctl调用shell脚本中的内容,而只需调用/Users/Shared/conflaunchd.sh(必须首先将其与描述变量的文件一起组成)即可。


-1

据说launchctl提供PATH给GUI Apps。要将路径设置为shell路径,请在设置路径后将以下内容添加到shell rc文件中:

launchctl setenv PATH $PATH

1
不幸的是,这行不通:-(
nohillside


我们允许做出真诚努力以解决该问题的答案。我们甚至允许错误的答案,并让投票代表正确性。评论而不隐瞒,是在错误的论点上戳个坑的最佳方法,而不是阻止人们尝试回答。
bmike
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.