Интернет говорит мне, что Windows не поддерживает shebang lines, но, по-видимому, Angular Cuses это делает и это работает. Пример файла, который использует это и работает в Windows: https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/bin/ng
Если я открою CMD, перейду в каталог с этим файлом и просто запущу ng
, Windows распознает, что его следует запустить с помощью node и выполнит (я предполагаю) 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.
Почему это так?
Вывод 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
.
При запуске ng
Windows ищет в вашем пути все возможные форматы исполняемых файлов ( exe
, bat
, cmd
, и т. д.) и запускает первый подходящий: ng.cmd
.
Если вы хотите запустить свой скрипт, то вам придется либо запустить его как аргумент node
, то есть node test
, либо создать test.cmd
файл, который делает то же самое.