2012-02-11 4 views

답변

2

C 쉘은 정의되지 않은 변수를 참조하기를 좋아하지 않습니다. 따라서 스크립트를 실행하기 전에 $HOSTTYPE을 설정하거나 $HOSTTYPE이 올바르게 결정되도록 스크립트를 수정해야합니다.

Bourne 쉘 및 파생 제품은 정의되지 않은 변수를 대부분 빈 문자열로 취급합니다.

제안 : 프로그래밍을 위해 C 쉘을 사용하지 마십시오. 참조 : Csh Programming Considered Harmful.

2

.sh 파일을 csh과 함께 시작 하시겠습니까?

.csh으로 csh 스크립트를 명명 할 필요는 없지만 .sh 파일은 일반적으로 Bourne 또는 bash 쉘 스크립트를 의미합니다.

또한 scrip 이름은 빌드 프로세스를 의미합니다. 빌드는 일반적으로 Solaris, AIX, HP 등의 오래된 유닉스 시스템의 Bourne (sh) 및 Linux의 경우 bash과 같은 기본 쉘로 수행됩니다.

직접 build.sh을 실행해야합니다 (스크립트를 직접 작성하지 않았거나 명령을받지 않은 경우). 앞에 쉘이 없어도 실행 가능합니다.

조나단 레플러 (Jonathan Leffler)는 모두 사실이라고 말합니다. 당신은 build.sh 쓰기 않았거나 당신이 제공하는 스크립트를 사용하고,

그래서
if (! $?HOSTNAME) then 
    setenv HOSTNAME `hostname` 
endif 

처럼 사용할 수 있습니다 '표기법'$?varName와 CSH가 비어 변수를 허용 않습니다 추가 할 수?

자신의 csh 스크립트를 작성한 경우 코드 블록을 사용하여 의 모든 변수에 대한 기본값을 확인하고 제공하십시오. 이를 달성하는 다른 방법은 source $HOME/.env_file과 같이 스크립트에 필요한 모든 변수 할당을 나열하는 $HOME/.env_file을 만들어야합니다.

제공된 스크립트를 사용하는 경우 우분투의 은 실제로 bash 스크립트와 매우 비슷합니다. 그 스크립트의 첫 번째 줄을 보시오. #!/bin/bash (또는 비슷한)이 맞는지 확인하십시오. 실행 스크립트가 실행되도록 설정되어 있다면 ls -l build.sh, 줄 앞쪽에 -rwxr-xr-x과 같은 것을보아야합니다. 'x가 열쇠입니다. 비트. 그렇지 않다면 chmod 755 build.sh가 해결할 것입니다. 권한이 실행을 허용하면 ./build.sh을 실행하십시오.

이 정보가 도움이되기를 바랍니다.

0

나 역시 비슷한 문제에 직면했다.

시험 : tcsh 빌드.쉬

0

HOSTTYPE 그것은 man bash에 설명되어 비 POSIX 배쉬 확장

이며, 우리가 POSIX 다운로드하여 grepping하여 언급하지 않는 것을 확인할 수 있습니다 따라서 Is there a listing of the POSIX API/functions?

, 그것은이다 변수가 csh에 정의되어 있지 않은 것은 놀라운 일이 아니며 오류가 발생합니다.

도 참조하십시오. Detect the OS from a Bash script