【问题标题】:Launch mac eclipse with environment variables set设置环境变量启动 mac eclipse
【发布时间】:2010-10-24 04:55:28
【问题描述】:

我公司提供了一个基于eclipse的开发环境,需要为底层工具链设置一些环境变量,这样可以同时安装多个版本,而不是接管系统。

我想在 finder 或 Dock 中提供一个图标来设置这些图标,然后启动 eclipse,这样客户就不会在没有设置环境的情况下意外启动 eclipse。这是我迄今为止尝试过的:

  1. Info.plist 中的设置环境 日食:

    这应该是一个不错的方法 但我不能让它添加到 现有路径(如导出 PATH=/myapp/bin:$PATH)。

  2. 包装eclipse的bash脚本:

    我创建了一个名为 eclipse.command 设置 环境然后启动eclipse。 这也会打开一个终端窗口 作为日食图标并允许 人们为了“保持码头” 光秃秃的日食。我不能放 坞站上的 eclipse.command 原样 不是应用程序。

  3. Applescript 包装 eclipse.command:

    Applescript 包装器 eclipse.command 使它看起来像 一个应用程序并阻止终端 窗口出现。不幸的是,我 现在得到一个停靠图标 applescript 和一个用于 eclipse 所以 仍然可以保持裸露的日食 码头。

有什么建议吗?我是否以完全错误的方式处理这个问题?

【问题讨论】:

  • 将原版 Eclipse 图标拖出扩展坞?

标签: eclipse macos environment-variables


【解决方案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 中完美运行:

    1. 打开 /Applications/Automator。
    2. 当出现下拉菜单询问您要创建哪种文档时,选择“应用程序”。
    3. 在左数第二个列表中,双击“运行 Shell 脚本”。
    4. 在右侧删除自动放在那里的“猫”,并将其替换为:

      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

        1. 创建简单脚本
        #!/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
        

        【讨论】:

          猜你喜欢
          • 2014-03-16
          • 2013-03-03
          • 2013-01-29
          • 1970-01-01
          • 2023-04-07
          • 2021-04-10
          • 2017-10-30
          • 1970-01-01
          • 2021-12-10
          相关资源
          最近更新 更多