node shebang이 Angular CLI에서는 작동하지만 내 파일에서는 작동하지 않는 이유는 무엇입니까?

node shebang이 Angular CLI에서는 작동하지만 내 파일에서는 작동하지 않는 이유는 무엇입니까?

인터넷에서는 Windows가 shebang 라인을 지원하지 않는다고 말하지만 분명히 Angular는 이를 지원하고 작동합니다. 이를 사용하고 Windows에서 작동하는 파일의 예: https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/bin/ng

CMD를 열고 해당 파일이 있는 디렉터리로 이동하여 간단히 실행하면 ngWindows는 노드와 함께 실행되어야 한다는 것을 인식하고 실행합니다(아마도) node ng. 하지만 내 파일로 시도해 보면 작동하지 않습니다. 해당 파일의 예:

#!/usr/bin/env node
'use strict';

console.log("logging test");

해당 파일을 다른 이름으로 저장 test하고 실행 하면 'test' is not recognized as an internal or external command, operable program or batch file.Why is that so?라는 메시지 가 나타납니다.

출력 where ng:

C:\Users\Dread\AppData\Roaming\npm\ng
C:\Users\Dread\AppData\Roaming\npm\ng.cmd

답변1

당신의 출력에서 where ng​​무슨 일이 일어나고 있는지 분명합니다.

Windows는 shebang 줄을 지원하지 않으므로 읽은 내용이 정확합니다. Windows가 지원하는 것은 파일 확장자이며 실행 가능한 확장자가 있습니다.

하다가지고 있지만 ng직접 실행되지는 않습니다. ng.cmd거의 확실하게 node ng.

Windows를 실행할 때 가능한 모든 실행 파일 형식( , , 등) ng에 대한 경로를 검색하고 일치하는 첫 번째 형식을 실행했습니다 .exebatcmdng.cmd

스크립트를 실행하려면 스크립트를 에 대한 인수로 실행하거나 node동일한 작업을 수행하는 파일을 node test만들어야 합니다 .test.cmd

관련 정보