%EB%A5%BC%20%ED%98%B8%EC%B6%9C%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
CMD.exe에서 다음과 같이 xjc를 실행할 수 있습니다.
xjc "c:/schema.xsd" -p abc -d "temp"
git Bash에서 다음과 같이 xjc를 실행할 수 있습니다.
xjc "/c/schema.xsd" -p abc -d "temp"
Cygwin의 경우 CMD.exe 구문을 사용하여 xjc.exe를 호출하는 경우에만 작동하게 할 수 있습니다.
이 문제가 발생한 스크립트는 ${PWD}를 사용하여 "c:/"가 아닌 "/c"로 확인되는 현재 디렉터리에 대한 경로를 가져오기 때문에 문제가 됩니다.
"/c"를 "c:/"로 바꾸는 해킹을 사용하더라도 xjc가 git Bash에서 호출할 때 유닉스 경로를 허용하지만 Cygwin에서는 호출하지 않는 이유를 알고 싶습니다.
답변1
문제는 두 가지입니다.
- Windows 경로를 예상하는 Windows 실행 파일을 사용하고 있으며
- bash는 자체 기본 cygwin 경로로 경로를 확장합니다.
Cygwin에서 올바른 경로 c:\schema.xsd
는 /cygdrive/c/schema.xsd
(~ 아니다 /c/schema.xsd
, 심볼릭 링크를 만들지 않는 한.) git-bash(msysgit에서 제공하는 것입니까?)를 사용하여 /c/schema.xsd
유효한 경로로 사용할 수 있는 이유는 저에게는 없습니다.
하나의 파일을 매개변수(bash/cygwin이 인식하는)로 사용하여 xcj를 호출하면 경로가 아닌 파일 핸들을 받게 됩니다. 그러나 단순한 문자열인 경우 해당 문자열은 추가 구문 분석 및 문자열 확장 없이 애플리케이션에 매개변수로 전달됩니다.
cygpath를 사용하여 이 문제에 접근할 수 있습니다(참조:Cygwin을 효과적으로 사용하기그리고cygpath-정보)을 사용하여 올바른 Windows 경로를 전달하거나, 파일이 하나만 있는 경우 올바른(unix/cygwin) 파일 경로를 전달해 보십시오.