通过Finder启动的应用似乎不遵守设置的PATH .bash_profile
。因此,当我尝试从IDE(Intellij)运行代码时,我不再有权访问中的程序/usr/local/bin
,该程序通常添加到了终端的路径中。
显然.MacOSX/environment.plist
以前是这样做的方法,但在Lion中不再起作用。
如何设置PATH
Finder启动的应用程序的?
通过Finder启动的应用似乎不遵守设置的PATH .bash_profile
。因此,当我尝试从IDE(Intellij)运行代码时,我不再有权访问中的程序/usr/local/bin
,该程序通常添加到了终端的路径中。
显然.MacOSX/environment.plist
以前是这样做的方法,但在Lion中不再起作用。
如何设置PATH
Finder启动的应用程序的?
Answers:
如果您使用的是10.7而不是10.8,则以下解决方案效果很好:
我在eclipse上遇到了同样的问题,但是现在我在我的菜单中添加了以下内容.bash_profile
,然后它起作用了。
export PATH=some_path:another_path
launchctl setenv PATH $PATH
万一您想保留原始路径原样使用
p=$(launchctl getenv PATH)
launchctl setenv PATH /my/new/path:$p
相反(或只是launchctl setenv PATH /my/new/path:$(launchctl getenv PATH)
)。
注意:更改launchctl PATH直到“重新启动” Dock才会生效。使用以下命令杀死当前的新Dock进程后,它将自动开始:
killall Dock
set|grep PATH
从它们运行总是会返回PATH=/usr/bin:/bin:/usr/sbin:/sbin
launchctl
以下命令后尝试重新启动扩展坞osascript -e 'tell app "Dock" to quit'
。那似乎为我解决了。
为了回答您对“新”问题的疑问,我决定写另一个答案-因为用示例更容易解释。
在选择的工具(IDE)启动时加载环境变量的一种方式就像可以使用Eclipse一样-我认为您的工具(IDE)中也必须有类似的结构。
如何在日食中完成-https: //stackoverflow.com/questions/829749/launch-mac-eclipse-with-environment-variables-set
(稍微重写一下环境变量)
在Eclipse应用程序包目录中创建一个名为“ eclipse.sh”的空文本文件。 /Applications/eclipse/Eclipse.app/Contents/MacOS
在文本编辑器中打开eclipse.sh并输入以下内容:
#!/bin/sh
. ~/.bash_profile
logger "`dirname \"$0\"`/eclipse"
exec "`dirname \"$0\"`/eclipse" $@
在终端中,设置外壳脚本eclipse.sh的可执行标志,即:
chmod +x /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.sh
打开Eclipse.app Info.plist,并将CFBundleExecutable键的值从eclipse更改为eclipse.sh。
MacOS X不会自动检测到Eclipse.app的Info.plist已更改。因此,您需要使用lsregister命令在终端中强制更新LaunchService数据库:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
下次从Dock或Finder启动Eclipse.app时,应设置环境变量。
在OS X 10.10 Yosemite上,我使用了以下命令:
sudo launchctl config user path <my path setting>
请注意,他为所有用户设置了launchtl PATH 。这对于我的用例来说效果很好。请注意,系统将要求您重新引导计算机以使效果生效。
sudo launchctl config user path /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
重新启动。
environment.plist
在大多数情况下,无需搞乱。
在Mountain Lion上,所有/etc/paths
和/etc/launchd.conf
编辑都不会生效!
苹果的开发者论坛说:
“更改.app本身的Info.plist,使其包含具有所需环境变量的“ LSEnvironment”字典。
〜/ .MacOSX / environment.plist不再受支持。”
因此,我直接编辑了该应用程序Info.plist
(右键单击“ AppName.app”(在本例中为SourceTree),然后单击“ Show package contents
”)
并添加了一个新的键/字典对:
<key>LSEnvironment</key>
<dict>
<key>PATH</key>
<string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string>
</dict>
(请参阅:Apple的LaunchServicesKeys文档)
现在,应用程序(在我的情况下为SourceTree)使用给定的路径并与git 1.9.3一起使用:-)
PS:当然,您必须调整Path条目以适合您的特定路径需求。
/etc/launchd.conf
。据推测,即使规则没有指出应用程序应该使用他们的Info.plist文件的路径,他们仍然可以使用其他文件- /etc/launchd.conf
,/etc/paths/
或/etc/paths.d/*
,或`〜/ .MacOSX / environment.plist。可以肯定地说,实际上,可以在这些文件中的任何一个中设置Mountain Lion中GUI应用程序的路径吗?
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
在更改plist之后,按照另一个答案中的说明运行,并且2.在其中添加完整路径,您不能像在配置文件脚本中那样使用现有的PATH。
lsregister
命令,如@JaakL所述。
在“山狮(10.8.4)”上,$PATH
经过特殊处理。launchctl setenv PATH /your/path:/here
对$PATH
随后从Dock或Finder启动的Terminal.app或Emacs.app实例没有任何影响(launchctl setenv SPONG foo
效果很好)。也$HOME/.launchd.conf
行不通。/etc/launchd.conf
这是我发现到处正确设置PATH的唯一方法。不幸的是,一个人不能在$HOME
该处使用envar ,因此笔记本电脑/Users/nb/bin
上的所有用户都可以使用$PATH
。那只是我,所以我不在乎。
PATH
您设置的值,但是:创建新终端时,它将启动一个登录shell,如果您使用bash /etc/profile
,它将执行executes ,并将其初始化PATH
为从返回的值/usr/libexec/path_helper
。如果选择Shell> New Command…并运行env
(不在Shell中),则应该找到的PATH
是通过launchd设置的值。
尝试在〜/ .profile或〜/ .bash_profile或〜/ .zprofile(对于zsh)中设置路径。这对VimR来说对我有用-从扩展坞启动时它不读取PATH,但从终端启动时它却起作用。顺便说一下,我在OSX 10.11上运行。
我对此没有足够的了解,无法很好地解释它为何起作用,在线上有很多关于不同配置文件及其作用的解释:https : //stackoverflow.com/questions/415403/ bashrc-bash配置文件和环境之间的区别是什么
另外,请在此处查看类似的讨论:https : //stackoverflow.com/questions/3344704/path-variable-not-properly-set-in-gvim-macvim-when-it-is-opened-from-the-finder/ 24542893#24542893