2011-11-10 24 views
0

現在のプロジェクトではGENESIS遺伝的アルゴリズムプログラムを実行する必要があり、教授はcshスクリプトを提供しています。これはフィットネス機能と外部の初期化とテンプレートファイルを簡単に渡すことができます。cshスクリプトが実行ファイルを見つけられない

スクリプトはmakefileを呼び出して実行可能ファイルをビルドし、適切な関数をミックスに追加し、実行可能ファイルga.FITを生成します。ここでFITはfiness関数のソースファイルの名前です。

学校のマシンで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を呼び出すようにスクリプトを変更する方が良いでしょう。

通常、に.があると、使用するシェルに関係なくセキュリティ上のリスクが発生する可能性があります。誰かが何か悪いことをするlsコマンドを植えたディレクトリにcdが入ると想像してください。 .$PATHに含まれていないことを確認した場合(現在のディレクトリでコマンドを実行するには./commandと入力する習慣があります)、このリスクは避けてください。

終わり.を持つ$PATHはそれほど危険である - しかし、テストプログラムの最も一般的な名前はtestで、test/bin/testを起動するために、./command習慣はまだ良いです。

そしてBasileは、cshがスクリプトを書くのに最適なシェルではないという点が良いですが、出力の様子から、あなたが実行しているスクリプトはおそらくそれほど大きな違いはありません。それでも、良い習慣とすべて。

2

おそらく$PATH.を追加する必要があります。

あなたの試験が終わったら、有名なC-shell considered harmful論文を教授に教えて、彼にWikipedia "Considered Harmful"のページを読むように勧めてください。

+2

または、 'ga.cancer2'ではなく'。/ ga.cancer2'を起動するようにスクリプトを修正してください。 '$ PATH'に' .'を追加する必要はありません。 –

+0

@Keith、それが解決策でした。このコメントを回答に変更すると、それを解決策として受け入れることができます。 @バジル、ニースのソースとクランチ時間が終わったときにそれをチェックします。 – Jason

+0

完了。 @バジルの答えは、BTWも動作する必要があります。 –

関連する問題