Para executar nativamente, você provavelmente precisará usar o Cygwin (sem o qual não consigo viver quando uso o Windows). Então, logo de cara, +1 para Cygwin. Qualquer outra coisa seria incivilizada.
NO ENTANTO, dito isto, recentemente comecei a usar uma combinação de utilitários para facilmente PORT Bash scripts para o Windows para que meus colegas de trabalho anti-Linux possam facilmente executar tarefas complexas que são melhor administradas por utilitários GNU.
Normalmente, consigo portar um script Bash para o Batch em um tempo muito curto, abrindo o script original em um painel e gravando um arquivo Batch no outro painel. As ferramentas que utilizo são as seguintes:
Eu prefiro UnxUtils ao GnuWin32 devido ao fato de que [alguém por favor me corrija se eu estiver errado] utils GnuWin normalmente precisam ser instalados, enquanto UnxUtils são binários autônomos que funcionam fora da caixa.
No entanto, os CoreUtils não incluem alguns utilitários * NIX familiares, como cURL, que também está disponível para Windows (curl.haxx.se/download.html).
Eu crio uma pasta para os projetos, e sempre SET PATH =. no arquivo .bat para que nenhum outro comando além dos comandos básicos do shell CMD seja referenciado (bem como os UnxUtils específicos necessários na pasta do projeto para que o script em lote funcione conforme o esperado).
Em seguida, copio os arquivos CoreUtils .exe necessários para a pasta do projeto e faço referência a eles no arquivo .bat, como ". \ Curl.exe -s google.com" etc.
O programa Bat2Exe é onde a mágica acontece. Depois que seu arquivo de lote estiver completo e testado com sucesso, inicie Bat2Exe.exe e especifique o caminho para a pasta do projeto. O Bat2Exe criará um binário do Windows contendo todos os arquivos dessa pasta específica e usará o primeiro .bat que vier a ser usado como o executável principal. Você pode até incluir um arquivo .ico para usar como ícone para o arquivo .exe final que é gerado.
Eu tentei alguns desses tipos de programas, e muitos dos binários gerados são sinalizados como malware, mas a versão Bat2Exe que mencionei funciona perfeitamente e os arquivos .exe gerados são completamente limpos.
O executável resultante pode ser executado de forma interativa com um clique duplo ou executado a partir da linha de comando com parâmetros, etc., assim como um arquivo Batch normal, exceto que você será capaz de utilizar a funcionalidade de muitas das ferramentas que normalmente usa no Bash.
Sei que está ficando muito longo, mas se me permitem divagar um pouco, também escrevi um script em lote que chamo de PortaBashy, que meus colegas de trabalho podem iniciar a partir de um compartilhamento de rede que contém uma instalação Cygwin portátil. Em seguida, ele define a variável% PATH% para o formato * NIX normal (/ usr / bin: / usr / sbin: / bin: / sbin), etc. e pode iniciar no próprio shell Bash ou iniciar o mais poderoso e bonito emulador de terminal MinTTY.
Sempre há várias maneiras de realizar o que você está tentando fazer; é apenas uma questão de combinar as ferramentas certas para o trabalho e, muitas vezes, tudo se resume à preferência pessoal.