天天看點

eclipse下使用cygwin直接運作shell檔案配置

最近事情挺多的,好久不寫部落格了。今天在看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

感覺挺好玩的。。。。

繼續閱讀