2011-11-10 63 views
0

對於當前的項目,我需要運行GENESIS遺傳算法程序,並且教授提供了一個csh腳本,它允許我們輕鬆傳遞健身函數以及外部啓動和模板文件。csh腳本找不到可執行文件

該腳本調用生成文件來構建可執行文件,將混合函數添加到混合並生成可執行文件ga.FIT,其中FIT是finess函數源文件的名稱。

在學校runnung Ubuntu 10.04的機器上,運行此腳本沒有任何問題。然而,當我嘗試我的機器上運行它,我得到以下的輸出:

./go cancer2 ex0 
Note: Genesis files modified for use on USM Linux cluster 
Note2: ga.cancer2 is your executable (e.g., if you need to use the debugger) 
making executables ... 
make: `ga.cancer2' is up to date. 
make: `report' is up to date. 
running ga.cancer2 ex0 ... 
ga.cancer2: Command not found. 

但可執行文件是存在的!我可以通過ga.cancer2 ex0分別手動調用它,它可以在csh和bash提示符下運行。我已驗證它不是權限問題,因爲chmod 755已被設置爲可執行文件。

這是特定於csh的東西,我應該考慮修改bash的腳本,還是堅持遠程學習系統?

回答

1

它看起來像ga.cancer2在您的當前目錄中。 Basile的答案應該可行,但修改腳本可能更好,因此它調用./ga.cancer2而不是ga.cancer2

通常,在您的$PATH中有.是潛在的安全風險(不管您使用的是哪個shell)。想象一下,cd進入一個目錄,其中有人已經植入了一個做壞事的ls命令。如果您確定.不在您的$PATH中(並且習慣於在當前目錄中鍵入./command執行命令),則可避免此風險。

.年底$PATH是風險較小 - 但因爲對測試程序中最常見的名字是testtest將調用/bin/test,則./command習慣仍然是一個很好的一個。

Basile有一個很好的觀點,即csh不是編寫腳本的最佳外殼 - 但是從輸出的外觀來看,您運行的腳本可能很簡單,以至於它沒有多大區別。不過,良好的習慣和所有這一切。

2

也許您需要將.添加到您的$PATH

一旦你有了考試,告訴你的教授關於着名的C-shell considered harmful論文,並建議他閱讀Wikipedia "Considered Harmful"頁面。

+2

或者更好,修改腳本以調用'./ ga.cancer2'而不是'ga.cancer2',所以你不必爲'$ PATH'添加'.'。 –

+0

@凱斯,那是解決方案。如果您將此評論更改爲答案,我將能夠接受它作爲解決方案。 @ Basile,很好的消息來源,當關鍵時間結束時會檢查出來。 – Jason

+0

完成。順便說一句,@ Basile的答案也應該有效。 –