最近事情挺多的,好久不写博客了。今天在看hadoop的时候,突然心血来潮,想在windows的eclipse下跑hadoop的shell脚本,这样就方便多了,查了一个晚上,终于看似找到了,泪奔。记录&分享一下,如果有人也有这样的需求或者备以后自己看。
所以本文只关注如何将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就可以运行了。这样感觉以后开发就方便多了。
另外,还发现了一个非常有趣的东东,一同记录分享。
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,然后运行这两个指令。可惜我好像木有运行成功,没有仔细找原因,不过我尝试了一下命令确实可以运行:
ftype bashscript=c:\cygwin\bin\bash.exe %1
感觉挺好玩的。。。。