启动环境变量设置的mac eclipse

问题描述 投票:28回答:8

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

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

  1. 在Info.plist中为eclipse设置环境: 这应该是一个很好的方法,但我不能使它添加到现有的路径(如export PATH = / myapp / bin:$ PATH)。
  2. 包装eclipse的bash脚本: 我创建了一个名为eclipse.command的bash脚本来设置环境然后启动eclipse。这将打开一个终端窗口以及eclipse图标,并允许人们为“日食”“保持停靠”。我不能把eclipse.command放在Dock上,因为它不是一个应用程序。
  3. Applescript包装eclipse.command: eclipse.command附近的Applescript包装使它看起来像一个应用程序,并阻止终端窗口出现。不幸的是,我现在得到了一个用于appcript的停靠图标和一个用于日食的停靠图标,所以仍然能够在码头上保持裸食。

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

eclipse macos environment-variables
8个回答
46
投票

有一个替代解决方案涉及在用户使用设置环境的shell包装器启动Eclipse应用程序时替换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时,应设置环境变量。


7
投票

我创建了以下内容:

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

如果从命令行运行start-eclipse,将拾取所有env变量。这样,您只需要在命令行和eclipse环境中维护一组env变量。


6
投票

看看相关的问题:Environment variables in Mac OS X

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

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


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" $@

3
投票

这在OS X Yosemite中完美运行:

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

现在转到File-> Save,将应用程序保存到Applications目录。我用资本'E'命名为“Eclipse”,以免与我已经拥有的“eclipse”目录冲突。通过选择真正的eclipse应用程序,按下command-i,选择图标,按下command-c,然后选择automator“Eclipse”应用程序,按下command-i,选择图标,你甚至可以给它Eclipse图标。 ,并按下命令-v。

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


3
投票

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

看截图:

enter image description here

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


1
投票

链接到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

一切正常:)


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" $@

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

© www.soinside.com 2019 - 2024. All rights reserved.