2011-11-10 4 views
0

현재 프로젝트의 경우 GENESIS 유전 알고리즘 프로그램을 실행해야하며 교수는 csh 스크립트를 제공하여 쉽게 외부 초기화 및 템플릿 파일뿐만 아니라 피트니스 기능도 전달할 수 있습니다.csh 스크립트가 실행 파일을 찾을 수 없습니다.

스크립트는 makefile을 호출하여 실행 파일을 빌드하고 fitness 함수를 믹스에 추가하고 실행 파일 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을 호출하도록 스크립트를 수정하는 것이 좋습니다.

일반적으로 에 .이있는 것은 잠재적으로 보안 위험이 있습니다 (사용중인 셸에 관계없이). 어떤 사람이 악의를 행하는 명령을 심었던 디렉토리에 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, 그게 솔루션이었습니다. 이 설명을 답으로 변경하면 해답으로 받아 들일 수 있습니다. @ Basile, 근사한 소스와 위기 상황이 끝났을 때 그것을 확인합니다. – Jason

+0

완료. @ Basile의 대답도 작동해야합니다, BTW. –

관련 문제