A Internet está me dizendo que o Windows não suporta linhas shebang, mas aparentemente o Angular Cuses e funciona. Exemplo de arquivo que utiliza e funciona no Windows: https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/bin/ng
Se eu abrir o CMD, navegar até o diretório com esse arquivo e executar simplesmente ng
, o Windows reconhecerá que ele deve ser executado com o nó e executará (presumo) node ng
. Mas se eu tentar isso com meu próprio arquivo, não funcionará. Exemplo desse arquivo:
#!/usr/bin/env node
'use strict';
console.log("logging test");
Se eu salvar esse arquivo como test
e executá-lo, recebo 'test' is not recognized as an internal or external command, operable program or batch file.
Por que isso acontece?
Saída de where ng
:
C:\Users\Dread\AppData\Roaming\npm\ng
C:\Users\Dread\AppData\Roaming\npm\ng.cmd
Responder1
Pela sua saída where ng
fica claro o que está acontecendo.
O Windows não suporta linhas shebang, então o que você leu está correto. O que o Windows suporta são extensões de arquivo e você tem uma extensão executável disponível.
Vocêfazertem ng
, mas não está sendo executado diretamente. ng.cmd
é quase certamente um arquivo em lote que executa node ng
.
Quando você executa ng
o Windows, pesquisou em seu caminho todos os formatos de arquivo executáveis possíveis ( exe
, bat
, cmd
, etc) e executou o primeiro que correspondesse: ng.cmd
.
Se quiser executar seu script, você terá que executá-lo como um argumento para node
, ou seja node test
, ou criar um test.cmd
arquivo que faça o mesmo.