eclipse下使用cygwin直接运行shell文件配置

最近事情挺多的,好久不写博客了。今天在看hadoop的时候,突然心血来潮,想在windows的eclipse下跑hadoop的shell脚本,这样就方便多了,查了一个晚上,终于看似找到了,泪奔。记录&分享一下,如果有人也有这样的需求或者备以后自己看。

当然在windows下跑shell当然是要先安装cygwin了,关于这个cygwin的安装就不在这里说了,另外关于如何在cygwin配置hadoop貌似已经有人写过了,也不在这里介绍了,有兴趣的童鞋可以参考:http://blog.csdn.net/yanical/article/details/4474830

所以本文只关注如何将cygwin引入到eclipse中以运行shell脚本。
在eclipse中,通过External Tools方式来支持嵌入包括cygwin在内的其他工具,以下是这些步骤:
1. eclipse->Run->External Tools->External Tools Configuration....
2. 在配置页面中,那么可以按你的爱好随便指定,如cywin_hadoop,location是指externl tools的地址,这里就是解释shell的bash,简单一点的,可以直接指定:C:\cygwin\bin\bash.exe,这样可以执行一些简单的命令,但是如果要引用其他解释器,那就有问题了,比如执行hadoop的shell文件,就会发现dirname命令找不到的提示。所以一种解决方法是自己写一个bat脚本,把需要用到的目录都写道PATH中,比如我编写了如下的bat脚本(当然如果需要其他更多其他目录的命令,可以往PATH中添加):

@echo off
rem 上一行关闭命令回显

PATH=C:\cygwin\bin\;%PATH%

bash %1

rem 开启命令回显
echo on

然后把location指向该文件。
3. Work Directory是指工作目录,可以指定你脚本所在目录,如我的hadoop脚本在scripts下,那么我就指定了:${workspace_loc:/hadoop/scripts}
4. Arguments我指定了当前的文件名:${resource_name},如果在实际运行hadoop脚本时参数可以往后再添加。

这样就配置好了,直接点击Run就可以运行了。这样感觉以后开发就方便多了。

另外,还发现了一个非常有趣的东东,一同记录分享。
为了在windows下点击shell脚本文件就可以直接运行shell脚本,有人想出了如下命令(出自:http://stackoverflow.com/questions/105075/how-can-i-associate-sh-files-with-cygwin):

assoc .sh=bashscript

ftype bashscript=C:\cygwin\bin\bash.exe --login -i -c 'cd "$(dirname "$(cygpath -u "%1")")"; bash "$(cygpath -u "%1")"'

即设置*.sh文件的默认执行软件是bash,如果在win7下需要用管理员身份打开cmd,然后运行这两个指令。可惜我好像木有运行成功,没有仔细找原因,不过我尝试了一下命令确实可以运行:

assoc .sh=bashscript
ftype bashscript=C:\cygwin\bin\bash.exe %1

感觉挺好玩的。。。。

时间: 2024-12-21 19:08:36

eclipse下使用cygwin直接运行shell文件配置的相关文章

在JDK和Eclipse下如何编写和运行Java Applet_java

Java Applet的源代码如下: import java.applet.*; import java.awt.*; public class HelloWorldApplet extends Applet { public void paint(Graphics g){ g.drawString("Hello,world",40,60); } } 在Eclipse下,可以在编好程序后直接点击Run-->Run即可运行Java Applet程序. 在JDK环境下,要在自己的Ja

Linux下Apache支持中文路径或文件配置

下载一个模块    代码如下 复制代码 wget ftp://ftp.aconus.com/fc5/mod_encoding/mod_encoding-2.2.0-1.i386.tar.gz tar zxf mod_encoding-2.2.0-1.i386.tar.gz rpm -ivh mod_encoding-2.2.0-1.i386.rpm 重启apache  代码如下 复制代码 /etc/init.d/httpd restart 报错如下  代码如下 复制代码 httpd: Synta

Eclipse快速上手Hibernate--2. 利用Hbm映射文件开发

   这篇文章是上篇文章<Eclipse快速上手Hibernate--1. 入门实例>的延续,主要说的是如何利用Hbm映射文件产生普通的Java对象及数据表.可以参考Hibernate自带的文档<HIBERNATE - 符合Java习惯的关系数据库持久化>的第15章--<工具箱指南>一节.同样,这篇文章没有过多谈理论,只是给出了一个完整的实例加以说明.相关配置请参考上篇文章.  1. 创建项目 ·  新建一个Java项目:HibernateBegin_2,注意选中&qu

java 打包成jar后无法运行(在eclipse下可以运行)???

问题描述 打包成jar后无法运行(在eclipse下可以运行)用java-jarxxx.jar命令可以运行!就是双击无法运行!以前可以双击运行重装JDK,后就无法双击运行了,但在eclipse下运行完全正常.请各位指点迷津!!! 解决方案 解决方案二:默认用Java-jar运行解决方案三:是这样的jar是不可以运行的,我们感觉它可以直接运行其实是可以用java打开,就像图片.视频可以双击打开一样.你重装java之后java.exe找不到了,所以就打不开了,你需要把%JAVA_HOME%bin加到

Eclipse下运行启动Heritrix1.14.4

前面我们知道了如何通过执行Heritrix官方提供的jar包去启动Heritrix,庆幸的是,Heritrix是完全开源的,所以我们可以将Heritrix的源码直接导入Eclipse去运行它. 首先解压heritrix-1.14.4-src.zip到任意盘符,这里我直接解压到桌面,解压后你会看到如图的目录结构:  src下毫无疑问是源码文件,lib是Heritrix依赖的jar包.Testdata文件夹里存放的是测试文件,可以忽略. 然后我们可以打开Eclipse,新建一个Java Projec

【OSGI】非Eclipse下构建OSGI运行环境

搭建非Eclipse下构建OSGI运行环境 由于工作需要,学习了OSGI.之前在Eclipse上搭建过OSGI模块化开发平台,但是这种启动plug-in项目的方法最终交付用户的时候不能让用户通过Eclipse来启动项目,所以我们要搭建一个非Eclipse下构建OSGI运行环境.   首先我写这篇文章的时间是2016年3月3日,我使用的编译器是Spring Tool Suite(和Eclipse几乎一模一样,只是添加了一些支持Spring的插件),我的JDK版本是1.7,OSGI的jar版本是or

我的eclipse EE不能运行java文件

问题描述 我的eclipse EE不能运行java文件 我的eclipse EE配置了tomcat,能运行jsp文件,但是就不能运行java文件,这是为什么?是哪里需要重新配置一下的吗?还是就只能运行一种啊? 解决方案 后来发现,原来要保存一下的,再运行的,不然就不行..主要以前不用保存就能运行,所以有点问题 解决方案二: 运行Java文件本质是运行某个含有main方法的类,只要某个类中有main方法,你直接右键run as Java application就可以了啊.如果是Javaee项目能选

eclipse中tomcat运行JSP文件出现以下错误

问题描述 eclipse中tomcat运行JSP文件出现以下错误 java.io.FileNotFoundException: conf ullmodel2xsl.xml (系统找不到指定的路径.) 怎么解决? 解决方案 java.io.FileNotFoundException: conf ullmodel2xsl.xml (系统找不到指定的路径.) 文件没有找到,是否缺少model2xsl.xml文件,或者路径不正确. 解决方案二: java.io.FileNotFoundException

windows下定时cmd命令行运行php文件实例

  在windows的cmd下,可以通过php.exe来执行php文件,然后将这个命令写入到bat里来定时执行,大概比浏览器定时刷新什么的要可靠多了. php.exe所在路径,以及待执行php文件路径即可(代码如下): D:Program Fileswampbinphpphp5.4.6php.exe D:Program Fileswampwwwphpinfo.php 保存为bat文件,即可利用windows的计划任务定时执行.有关cmd下php.exe的运行,可以随时使用 -h 参数来查看. >