30

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

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

  1. 在 Info.plist 中为 Eclipse 设置环境:

    这应该是一个不错的方法,但我无法将其添加到现有路径(如 export PATH=/myapp/bin:$PATH)。

  2. bash 脚本包装 eclipse:

    我创建了一个名为 eclipse.command 的 bash 脚本来设置环境,然后启动 eclipse。这将打开一个终端窗口以及 Eclipse 图标,并允许人们“保持停靠”以查看裸月食。我不能将 eclipse.command 放在扩展坞上,因为它不是应用程序。

  3. Applescript 包装 eclipse.command:

    围绕 eclipse.command 的 Applescript 包装器使它看起来像一个应用程序并防止出现终端窗口。不幸的是,我现在得到了一个用于applescript 的dock 图标和一个用于eclipse 的图标,因此仍然可以将裸露的eclipse 保留在dock 上。

有什么建议么?我会以完全错误的方式解决这个问题吗?

4

9 回答 9

47

当用户启动 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 时,应该设置环境变量。

于 2009-07-25T18:52:58.367 回答
8

我创建了以下内容:

别名 start-eclipse='打开 /Applications/eclipse/Eclipse.app'

如果你从命令行运行 start-eclipse,所有的环境变量都会被选中。这样,您只需要在命令行和 eclipse 环境中维护一组 env var。

于 2011-07-20T18:09:16.637 回答
6

看看一个相关的问题:Mac OS X 中的环境变量

基本上,这涉及到~/.MacOSX/environment.plist文件的创建。

注销并登录 environment.plist 以被 .App 获取

于 2009-05-06T14:16:08.687 回答
4

这在 OS X Yosemite 中完美运行:

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

    source ~/.bash_profile && /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse
    

现在转到 File->Save,并将应用程序保存到您的 Applications 目录。我将它命名为“Eclipse”,大写字母“E”,以免与我已经拥有的“eclipse”目录冲突。为了更好地衡量,您甚至可以通过选择真正的 eclipse 应用程序,按 command-i,选择图标,按 command-c,然后选择自动机“Eclipse”应用程序,按 command-i,选择图标来给它 Eclipse 图标,然后按命令-v。

现在您可以打开该应用程序,甚至可以将其拖到您的 Dock 上。请注意,如果您启动它,“真正的”日食仍将作为单独的图标显示在您的 Dock 中,但您不能拥有一切。:)

于 2015-03-19T00:44:59.843 回答
3

sakra 上面的答案很棒,除了它不会自动继承您现有的 bash 环境。为确保 eclipse.sh 选择您现有的 bash 环境,请修改 eclipse.sh 以使用 bash 而不是 sh 并添加一行来获取您现有的 ~/.bash_profile 因此:

#!/bin/bash
source ~/.bash_profile
logger "`dirname \"$0\"`/eclipse"
exec "`dirname \"$0\"`/eclipse" $@
于 2015-02-10T05:46:00.210 回答
3

以上都不适合我。您必须将 Eclipse -> Preferences -> Terminal -> Arguments 设置为 --login 这将指示 Eclipse 在打开终端后使用您的帐户登录。

看截图:

在此处输入图像描述

参考:https ://marketplace.eclipse.org/comment/4259#comment-4259

于 2017-05-08T04:55:04.533 回答
1

指向 Eclipse 的链接不使用 .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

一切正常:)

于 2013-08-12T19:48:27.497 回答
1

正如https://github.com/atom/atom/issues/7045中指出的那样,环境变量可以自动加载,无需显式source ~/.bash_profile使用

#!/usr/bin/env bash -l

代替

#!/bin/bash
source ~/.bash_profile

之后,在这两种情况下,都遵循

exec "`dirname \"$0\"`/eclipse" $@

它对我很有用,感谢所有以前的工作。

于 2016-03-29T11:06:21.650 回答
0

在 .bash_profile 中设置环境变量后。只需通过终端打开应用程序!

open /Application/{path/to/app}.app
于 2021-12-24T16:57:22.770 回答