2009-06-01 2 views
2

Linux 환경에서 실행될 Java 응용 프로그램의 시작 스크립트를 테스트하기 위해 Cygwin을 사용하려고합니다.Cygwin을 사용하여 쉘 스크립트를 실행하고 Java 명령에 적절한 경로 분리자를 사용합니다.

troule은 boothclasspath 또는 Classpath를 지정할 때 OS 특정 경로 분리자를 사용해야합니다. ";" 윈도우에서는 ":", 리눅스에서는 ":". 이것은 Java가 여전히 기본 Windows 응용 프로그램이며 기본 OS 경로 분리 자 (Cygwin List Path Seperator)를 사용하기 때문에 발생합니다.

쉘 스크립트에서 OS가 무엇인지 감지 할 수있는 방법이 있습니까 (또는 CYGWIN), 적절한 경로 분리자를 지정하십시오.

나는 다음과 같은 설정하려고 해요 : 그것은 필요가 Windows에서

MAVEN_OPTS="-Xbootclasspath/a:test/resources:live/resources" 

가 될 : MAVEN_OPTS의 = "- Xbootclasspath/A : 시험/자원/자원을 라이브"

답변

5

발견 여기에 대답 : 당신은 예를 들어, Cygwin에서 실행하는 경우 Detect OS from a bash script (Using $OSTYPE)

PATHSEP=":" 
if [[ $OSTYPE == "cygwin" ]] ; then 
PATHSEP=";" 
fi 

MAVEN_OPTS="-Xbootclasspath/a:test/resources${PATHSEP}live/resources" 
+0

더 좋은 경우 echo $ "OSTYPE" "| egrep -iq '^ (cygwin | msys)'' – smac89

4

당신은 uname(1)을 사용할 수 있습니다 테스트 할 :

if uname | grep -iq cygwin; then 
    # use ; for path separator 
else 
    # use : for path separator 
fi 
관련 문제