DOSBox 기본 명령어 및 관련 프로그램이 들어있는 Z:\ 라는 드라이브가 있습니다.
예를 들어 C:\HELP.EXE 파일을 실행시킬려고 합니다.
그런데 자꾸 Z:\HELP.EXE가 실행되어 지더군요.
그래서 PATH 설정 문제인가 해서 SET PATH=C:\로 지정한 후 HELP라고 치니 여전히 Z:\HELP.EXE가 실행된 것과 같은 결과를 보여주었습니다.
< 문제점 >
HELP -> Z:\HELP.EXE가 실행됨
HELP.EXE -> Z:\HELP.EXE가 실행됨
C:\HELP.EXE -> Z:\HELP.EXE가 실행됨
※ SET PATH=Z:\를 변경 하여도 결과는 변하지 않음
예전 MS-DOS COMMAND.COM에서는 DIR 과 같은 명령어를 쳤을 경우 우선순위가 현재 디렉토리에 실행가능한 파일이 있는지 먼저 확인하고 그 다음이 PATH 경로를 확인한 뒤 그래도 없을 경우 내부 명령어를 처리했던 것으로 기억합니다.
DOSBox의 명령어 처리 방식은 기존 DOS 환경과 조금 다른 우선순위를 보여주고 있으며 이로 인하여 기본 명령어와 동일한 실행파일명은 아예 실행조차 할 수 없는 문제가 따릅니다.
< 변경안 >
HELP -> Z:\HELP.EXE가 실행됨
HELP.EXE -> 지정한 HELP.EXE가 실행됨
C:\HELP.EXE -> 지정한 HELP.EXE가 실행됨
※ EXE 외에 실행 가능한 BAT, COM 파일에도 동일 적용
위와 같은 형태로 파일명이나 경로명을 직접 지정하였을 경우에는 우선 순위가 내부 명령어가 아니였으면 좋겠네요^^
첫댓글 Z 드라이브에는 HELP.EXE가 존재하지 않습니다. HELP는 도스박스의 내부 명령어입니다. 이것은 도스박스 정식 버전에서도 똑같이 처리됩니다.
확인해보니 내부명령어네요. Z:\HELP.EXE를 모두 내부명령어 HELP가 실행되는걸로 보시면 될듯 합니다. 우선순위에 때문에 HELP.EXE 파일을 실행할 수 없는 문제를 SVN 빌드에서 개선하였음 좋겠어요~^^
내부 명령어의 경우 가능하면 도스박스 정식 버전의 흐름(공식 개발자의 취지)과 같이 맞추어 나가야 합니다.
HELP.BAT, HELP.COM, HELP.EXE 파일을 실행하지 못하는 문제점은 어떻게든 앞으로 개선되어야 할 점으로 보입니다.
이외에 다른 내부명령어로 인하여 우선순위가 밀려 실행되지 못하는 파일명들이 있을 것입니다.
MS-DOS 명령어 처리기인 COMMAND.COM 에서 동일한 내부 명령어가 존재하지만 우선순위를 이같이 처리하지 않았습니다.
SVN 빌드에서 한글 파일명을 지원하는 것처럼 HELP.EXE와 같은 파일을 실행하지 못하는 문제점이 개선되었으면 좋겠습니다.
이것은 매우 복잡한 문제입니다. HELP를 예외 처리하게 되면 다른 내부 명령어(CD, 예를 들어 CD.EXE와의 충돌 시)까지 영향을 받습니다. 이 경우 HELP를 제거하는 것이 차라리 나을 수도 있습니다. HELP만을 예외 처리하는 것은 도스 시스템에서 이치에 맞지 않습니다(illegal).
CD, DIR...등의 다른 명령어도 포함해서 건의드린 것입니다.
< 개선안 (다른 명령어들도 동일) >
-HELP 라고만 입력했을 경우 내부 명렁어로 처리
-HELP.EXE 또는 HELP.COM 형태로 실행 파일 확장자까지 지정했을 경우에는 해당 파일 실행
참고로 이는 내부 명령어를 없애거나 기능의 변화를 요구하는게 아닙니다. CD.EXE, DIR.EXE, HELP.EXE와 같이 확장자를 지정했을 경우 이를 내부 명령어 처리와 구분하여 해당 파일들이 실행될 수 있게 개선되었음 좋겠다는 것입니다. (기존 MS-DOS 처럼)
직접 cmd.exe 를 열어놓고 CD.EXE 파일을 하나 만든 후 테스트 해보시면 기존 MS-DOS에서 우선처리가 어떻게 되어있는지 확인가능하실거예요
COPY 명령어의 경우, 도스박스 내부 COPY 명령어에 타임스탬프를 저장하지 못하는 문제 때문에 Z:\에다 COPY.EXE를 따로 놓고 있는 실정입니다. 이 밖에도 몇 가지 고려 사항들이 더 있습니다. 시간이 되면 추후 천천히 확인해 보겠습니다. 감사합니다.