设置环境变量启动 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无法读取环境变量的问题

eclipse启动出错,环境变量设置正确

Mac下Eclipse读取不到环境变量

为什么Java使用System.getenv()获取刚刚设置的环境变量时为空

MAC设置环境变量

mac怎么配置环境变量