2009-09-16 2 views
3

쉘 기능을 자주 사용하여 특정 기능을 제공하는 Linux 도구 세트를 이식합니다. 이러한 함수는 새 셸을 시작할 때 자동으로 제공되며 자식 프로세스가 부모 환경을 변경할 수 없기 때문에 독립 실행 형 프로그램에서는 거의 불가능한 작업 디렉터리 변경과 같은 작업을 포함합니다.셸 기능을 cmd.exe에 이식 : 시작시 자동으로 스크립트를 소스화할 수 있습니까?

예를 들어, 작업 디렉토리를 이전에 책갈피에 추가 한 것으로 변경하는 기능이 있습니다 (예 : cdbm). 이제 Windows에서도 똑같이하고 싶지만, cmd.exe과 붙어 있습니다. 내가 아는 한 스크립트는 문제가되어서는 안되는 jscript, vbscript 또는 일반 배치로 이식 될 수 있습니다. 하지만 어떻게 시작시 자동으로 소스를 얻고 쉘 환경에서 살 수 있는지 확인해야합니까?

답변

8

: 테스트로

 
If /D was NOT specified on the command line, then when CMD.EXE starts, it 
looks for the following REG_SZ/REG_EXPAND_SZ registry variables, and if 
either or both are present, they are executed first. 

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun 

     and/or 

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun 

, 내가 문자열 값 "에코 하이"위에서 소위 "자동 실행"표시된 HLM 지점에서 새 키를 생성 regedit에. 내가 cmd의 새로운 인스턴스를 시작했을 때 나는 가지고 :

 
Microsoft Windows [Version 6.0.6000] 
Copyright (c) 2006 Microsoft Corporation. All rights reserved. 
Hi 

C:\Users\Username> 
대신 실행할 스크립트의 이름을 넣을 수

는 (나는 그것을에서 환경 변수로 스크립트 나 하나에 완전히 지정된 경로에 넣어 것 (이름에 공백이있는 경우 따옴표 포함)와 같은 "%의 HOMEPATH %의 \ 스크립트 \ scriptname는"

편집 :.. 레지스트리 키가 몇 가지 부작용이 한 예는 help입니다 제가이있는 경우. 예를 들어 help vol을 입력하면 자동 실행시 위의 echo 명령이 도움말 텍스트 바로 위에 "안녕"표시가됩니다 . vol /?을하고 있지만 그렇게하지는 않습니다.

0

cygwin을 살펴보십시오. CMD이 시작될 때

+0

나는 cygwin에 대해 알고 있지만 실제로이 옵션이 아닙니다. 도구가 이미 작동하지만 POSIX 계층을 설치할 필요없이 Windows 사용자에게 동일한 기능을 제공하려고합니다. – blokkie

+1

이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. –

+0

@Rostyslav : 대답은 cygwin을 보는 것이 었습니다. 링크는 추가 보너스였습니다. – sbi

2

당신은 그 프로그램을 실행하는 실행 배치 파일이나 다른 다음 레지스트리 키 중 하나를 설정할 수 있습니다

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun 
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun 

배치 파일은 실행의 현재 디렉토리를 변경 할 수 있어야한다 CMD은 서브 프로세스로 실행되지 않으므로 CD 명령으로 처리됩니다. 스위치 CMD/D을 입력하여 자동 실행 동작을 비활성화 할 수 있습니다.

자세한 내용은 CMD /?을 참조하십시오. help cmd에 따르면

1

cmd은 전역 범위에서 함수를 정의 할 수 없기 때문에 시작할 때 스크립트를 자동 소싱하여 정확히 무엇을 얻으려고하는지 정확히 이해할 수 없습니다. 정기적으로 필요한 배치 파일을 배치 할 수있는 배치 파일 디렉토리를 내 경로에 포함하는 경향이 있습니다.