當(dāng)然在windows下跑shell當(dāng)然是要先安裝cygwin了,關(guān)于這個cygwin的安裝就不在這里說了,另外關(guān)于如何在cygwin配置hadoop貌似已經(jīng)有人寫過了,也不在這里介紹了,有興趣的童鞋可以參考:http://blog.csdn.net/yanical/article/details/4474830
所以本文只關(guān)注如何將cygwin引入到eclipse中以運行shell腳本。
在eclipse中,通過External Tools方式來支持嵌入包括cygwin在內(nèi)的其他工具,以下是這些步驟:
1. eclipse->Run->External Tools->External Tools Configuration....
2. 在配置頁面中,那么可以按你的愛好隨便指定,如cywin_hadoop,location是指externl tools的地址,這里就是解釋shell的bash,簡單一點的,可以直接指定:C:\cygwin\bin\bash.exe,這樣可以執(zhí)行一些簡單的命令,但是如果要引用其他解釋器,那就有問題了,比如執(zhí)行hadoop的shell文件,就會發(fā)現(xiàn)dirname命令找不到的提示。所以一種解決方法是自己寫一個bat腳本,把需要用到的目錄都寫道PATH中,比如我編寫了如下的bat腳本(當(dāng)然如果需要其他更多其他目錄的命令,可以往PATH中添加):
@echo off
rem 上一行關(guān)閉命令回顯
PATH=C:\cygwin\bin\;%PATH%
bash %1
rem 開啟命令回顯
echo on
然后把location指向該文件。rem 上一行關(guān)閉命令回顯
PATH=C:\cygwin\bin\;%PATH%
bash %1
rem 開啟命令回顯
echo on
3. Work Directory是指工作目錄,可以指定你腳本所在目錄,如我的hadoop腳本在scripts下,那么我就指定了:${workspace_loc:/hadoop/scripts}
4. Arguments我指定了當(dāng)前的文件名:${resource_name},如果在實際運行hadoop腳本時參數(shù)可以往后再添加。
這樣就配置好了,直接點擊Run就可以運行了。這樣感覺以后開發(fā)就方便多了。
另外,還發(fā)現(xiàn)了一個非常有趣的東東,一同記錄分享。
為了在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è)置*.sh文件的默認執(zhí)行軟件是bash,如果在win7下需要用管理員身份打開cmd,然后運行這兩個指令??上液孟衲居羞\行成功,沒有仔細找原因,不過我嘗試了一下命令確實可以運行:ftype bashscript=C:\cygwin\bin\bash.exe --login -i -c 'cd "$(dirname "$(cygpath -u "%1")")"; bash "$(cygpath -u "%1")"'
assoc .sh=bashscript
ftype bashscript=C:\cygwin\bin\bash.exe %1
感覺挺好玩的。。。。
ftype bashscript=C:\cygwin\bin\bash.exe %1