设置环境变量启动 mac eclipse
Posted
技术标签:
【中文标题】设置环境变量启动 mac eclipse【英文标题】:Launch mac eclipse with environment variables set 【发布时间】:2010-10-24 04:55:28 【问题描述】:我公司提供了一个基于eclipse的开发环境,需要为底层工具链设置一些环境变量,这样可以同时安装多个版本,而不是接管系统。
我想在 finder 或 Dock 中提供一个图标来设置这些图标,然后启动 eclipse,这样客户就不会在没有设置环境的情况下意外启动 eclipse。这是我迄今为止尝试过的:
Info.plist 中的设置环境 日食:
这应该是一个不错的方法 但我不能让它添加到 现有路径(如导出 PATH=/myapp/bin:$PATH)。
包装eclipse的bash脚本:
我创建了一个名为 eclipse.command 设置 环境然后启动eclipse。 这也会打开一个终端窗口 作为日食图标并允许 人们为了“保持码头” 光秃秃的日食。我不能放 坞站上的 eclipse.command 原样 不是应用程序。
Applescript 包装 eclipse.command:
Applescript 包装器 eclipse.command 使它看起来像 一个应用程序并阻止终端 窗口出现。不幸的是,我 现在得到一个停靠图标 applescript 和一个用于 eclipse 所以 仍然可以保持裸露的日食 码头。
有什么建议吗?我是否以完全错误的方式处理这个问题?
【问题讨论】:
将原版 Eclipse 图标拖出扩展坞? 【参考方案1】:还有一个替代解决方案,它涉及在用户启动 Eclipse 应用程序时用设置环境的 shell 包装器替换 MacOS X 运行的可执行文件。
在 Eclipse 应用程序包目录 /Applications/eclipse/Eclipse.app/Contents/MacOS 中创建一个名为“eclipse.sh”的空文本文件。
在文本编辑器中打开 eclipse.sh 并输入以下内容:
#!/bin/sh
export ENV_VAR1=value
export ENV_VAR2=value
logger "`dirname \"$0\"`/eclipse"
exec "`dirname \"$0\"`/eclipse" $@
在示例中 ENV_VAR1 和 ENV_VAR2 是正在设置的环境变量。这些变量将对从 Eclipse 中启动的进程可见。 logger 命令只会将 eclipse 可执行文件的路径记录到 system.log 作为调试帮助。
在终端中设置shell脚本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 时,应设置环境变量。
【讨论】:
简直就是最好的选择!非常感谢,完美运行!! 这似乎不再起作用,至少在带有 Eclipse Indigo (3.7) 的 OSX Lion 下。 感谢这个答案!由于 Eclipse Mars 需要使用/Applications/Eclipse.app
: /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/Eclipse.app
我不喜欢这个解决方案,因为除非他们在自己的机器上这样做,否则参与项目的每个人都无法轻松使用我的套件。 OSX 没有将环境变量传递给启动的应用程序的可靠方法,这绝对是荒谬的。我确实喜欢这个解决方案,因为它是唯一对我有用的东西。
@MattClark 如果有帮助,您可以轻松编写解决方案来制作包装器。 Here is mine.【参考方案2】:
我创建了以下内容:
alias start-eclipse='open /Applications/eclipse/Eclipse.app'
如果你从命令行运行 start-eclipse,所有的环境变量都会被选中。这样,您只需要在命令行和 eclipse 环境中维护一组 env var。
【讨论】:
这并不理想,但它在 OSX Lion 和 Eclipse 3.7.1 中为我解决了问题。 理想的解决方案不会有任何折衷。 嗯,选择的答案肯定有权衡:您必须在命令行和 Eclipse 环境中维护不同的环境变量集。这个回答者提到了这一点。另外,这是一个非常简单/容易的解决方案。 @Chris Fregly 如果我们更改环境变量并希望它生效,我们是否必须重新启动 eclipse?【参考方案3】:看看一个相关的问题:Environment variables in Mac OS X。
基本上,这涉及到创建~/.MacOSX/environment.plist
文件。
退出并登录 environment.plist 以被 .App 获取
【讨论】:
【参考方案4】:这在 OS X Yosemite 中完美运行:
-
打开 /Applications/Automator。
当出现下拉菜单询问您要创建哪种文档时,选择“应用程序”。
在左数第二个列表中,双击“运行 Shell 脚本”。
在右侧删除自动放在那里的“猫”,并将其替换为:
source ~/.bash_profile && /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse
现在转到文件->保存,并将应用程序保存到您的应用程序目录。我将它命名为“Eclipse”,大写字母“E”,以免与我已经拥有的“eclipse”目录冲突。为了更好地衡量,您甚至可以通过选择真正的 eclipse 应用程序,按 command-i,选择图标,按 command-c,然后选择自动机“Eclipse”应用程序,按 command-i,选择图标来给它 Eclipse 图标,然后按命令-v。
现在您可以打开该应用程序,甚至可以将其拖到您的 Dock 上。请注意,如果您启动它,“真正的”日食仍将作为单独的图标显示在您的 Dock 中,但您不能拥有一切。 :)
【讨论】:
【参考方案5】:sakra 上面的答案很棒,除了它不会自动继承您现有的 bash 环境。为确保 eclipse.sh 选择您现有的 bash 环境,请修改 eclipse.sh 以使用 bash 而不是 sh 并添加一行来获取现有 ~/.bash_profile 的源代码:
#!/bin/bash
source ~/.bash_profile
logger "`dirname \"$0\"`/eclipse"
exec "`dirname \"$0\"`/eclipse" $@
【讨论】:
太棒了。我可以验证这与 sakra 的上述答案一样有效【参考方案6】:以上都不适合我。您必须将 Eclipse -> Preferences -> Terminal -> Arguments 设置为 --login 这将指示 Eclipse 在打开终端后使用您的帐户登录。
看截图:
参考:https://marketplace.eclipse.org/comment/4259#comment-4259
【讨论】:
【参考方案7】:链接到Eclipse doesn't use the path set in .bashrc
-
创建简单脚本
#!/bin/bash source /home/user/.environment_variables /home/user/eclipse_cpp/eclipse -Duser.name="My Name"
2。 接下来将所有系统变量放入文件 /home/user/.environment_variables (您想要的任何文件)
我的样子:
export COCOS_ROOT=/home/user/Projects/edukoala
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
3。 现在您可以删除 .bashrc 中的变量并放入行
source /home/user/.environment_variables
一切正常:)
【讨论】:
这个答案似乎适用于 unix/linux。最初的问题是关于 macOS。 mac 上的 Eclipse 通常不会从 shell 上下文中运行。 @Kenster 的答案是 Mac ;) 4 年前【参考方案8】:正如https://github.com/atom/atom/issues/7045中所指出的,环境变量可以自动加载,无需显式使用source ~/.bash_profile
#!/usr/bin/env bash -l
而不是
#!/bin/bash
source ~/.bash_profile
之后,在这两种情况下,都遵循
exec "`dirname \"$0\"`/eclipse" $@
它对我很有用,感谢之前的所有工作。
【讨论】:
将此与 sakras 答案结合起来终于成功了 ?【参考方案9】:在 .bash_profile 中设置环境变量后。 只需通过终端打开应用程序!
open /Application/path/to/app.app
【讨论】:
以上是关于设置环境变量启动 mac eclipse的主要内容,如果未能解决你的问题,请参考以下文章
mac os x10.11.2系统eclipse无法读取环境变量的问题