Existe uma maneira de executar scripts Bash no Windows? [fechadas]

100

Comprei e uso o Windows 7 Ultimate e gosto de usá-lo para desenvolver aplicativos. Uma das desvantagens (como em todo sistema operacional) é que não consigo executar scripts Bash. Existe uma maneira de executar scripts Bash no Windows instalando algum software? Está tudo bem se não funcionar 100%, mas desde que a funcionalidade mais comum esteja disponível, deve ser ótimo.

Torre
fonte
3
@Rajish Não mais ...
msanford
1
@msanford, Isso não faz sentido. Por que este tópico permanece ativo enquanto sua duplicata é fechada?
Pacerier
@Pacerier A duplicata foi excluída, quase certamente por seu autor, já que os mods tendem a não excluir perguntas. Provavelmente é a isso que meu comentário se referia. Não sei por que o autor o deletou. Também foi há 4 anos.
msanford
executar bash no
windows10

Respostas:

80

Instale o Cygwin , que inclui o Bash entre muitos outros utilitários GNU e Unix (sem os quais é improvável que o bash seja muito útil de qualquer maneira).

Outra opção é o MSYS do MinGW, que inclui o bash e um conjunto menor de utilitários mais importantes, como o awk. Pessoalmente, eu teria preferido o Cygwin porque inclui ferramentas de trabalho pesadas como Perl e Python, as quais acho que não posso viver sem, enquanto o MSYS os economiza e assume que você mesmo irá instalá-los.

Atualizado : Se alguém estiver interessado nesta resposta e estiver executando o MS-Windows 10, observe que o MS-Windows 10 tem um recurso " Subsistema Windows para Linux " que - uma vez ativado - permite que você instale uma imagem do Ubuntu e do modo de usuário em seguida, execute o Bash nisso. Isso fornece 100% de compatibilidade com o Ubuntu para depuração e execução de scripts Bash, mas esta configuração é completamente independente do Windows e você não pode usar scripts Bash para interagir com recursos do Windows (como processos e APIs), exceto para acesso limitado a arquivos por meio do recurso DrvFS .

Guss
fonte
2
Consulte a documentação do Windows Subsystem for Linux (WSL) para obter mais informações.
estomia
1
WSL ficou obsoleto para Windows 10 S agora ... :(
Javier García Manzano
2
Não obsoleto, é apenas um dos recursos que você não obtém ao comprar a versão mais barata do Windows " S mall edition". Também não está disponível na Home Edition, IIRC.
Guss
Git permite que você execute arquivos em lote facilmente de qualquer lugar nas janelas youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan
@MuhammadFaizanKhan - A porta do Git para o Windows, bem como alguns outros aplicativos "orientados para linha de comando" (Github Desktop como um exemplo notável) também vêm com uma porta do Windows do Bash. Estas, na maioria das vezes, são portas MinGW (ou seja, compiladas usando MinGW e MSYS para compatibilidade com Posix). Especificamente, se você olhar para a instalação do Git para Windows, verá o mingw32diretório que contém basicamente MSYS. Então Git para Windows é MinGW que inclui Git (seu opcional no instalador MSYS) com um instalador "mais legal": superuser.com/a/1362301/10942
Guss
30

A melhor opção que encontrei é o Git Windows. Basta instalá-lo, clicar com o botão direito do mouse e clicar em "Git Bash Aqui" para abrir uma janela do bashinsira a descrição da imagem aqui

Isso abrirá uma janela bash como esta: insira a descrição da imagem aqui

e os comandos do linux funcionam ...

Tentei os comandos 'sh', 'vi', 'ssh', 'curl', etc ...

Garvit Jain
fonte
ISTO - é tão simples, não?
Kalpesh Soni
Sim, muito útil
Garvit Jain
4
Você também pode instalar o MinGW sem o inchaço extra do Git se tudo o que você deseja é seu shell.
Stefan Z Camilleri,
Você pode assistir a este tutorial de um minuto aqui youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan
25

Se você está procurando por algo um pouco mais nativo, pode usar getGnuWin32 para instalar todas as ferramentas de linha de comando do Unix que foram portadas. Além disso, o winBash oferece a maior parte de um ambiente Unix funcional. Adicione o console2 para um emulador de terminal melhor e você quase não conseguirá identificá- lo no Windows!

O Cygwin é um kit de ferramentas melhor no geral, mas me deparei com problemas inesperados por causa da divisão entre ele e o Windows. Nenhuma dessas soluções é tão boa quanto um sistema Linux nativo.

Você pode querer usar o virtualbox para criar uma VM Linux com a distribuição de sua escolha. Configure-o para compartilhar uma pasta com o sistema operacional host, e você pode usar um verdadeiro ambiente de desenvolvimento Linux e compartilhar com o Windows. Apenas tome cuidado com os marcadores EOL, eles pegam você sempre.

Spencer Rathbun
fonte
Ou CoLinux: colinux.org
Guss
colinux não funciona em 64 bits (ainda)
hexículo
Alguém sabe de um sucessor para o projeto win-bash? Não está mais ativamente desenvolvido e preso no bash v 1.14 (o bash propriamente dito, a partir deste post, é v 4.4)
Bjartr
@Bjartr O pessoal da Microsoft adicionou um recurso para permitir que uma versão nativa do bash seja executada no Windows 7
Spencer Rathbun
@SpencerRathbun Isso só funcionará no Windows 10, por acaso estou no Windows 7. Também não tenho certeza de como funciona misturando executáveis ​​e caminhos do linux e do Windows, então pode não ser melhor (da minha perspectiva) do que o cygwin bash .
Bjartr 01 de
11

Melhor opção? Windows 10. Suporte nativo a Bash!

Paul0515
fonte
2
Não, não são as melhores opções. Você apenas executa o linux dessa maneira, não bash IN windows - você não pode iniciar executáveis ​​do Windows a partir desse bash (a menos que você contorne isso com cbwin... mas isso já é muito barulho para apenas uma solução alternativa).
ankostis
A opção 'melhor' é provavelmente uma questão de gosto. Então, talvez você esteja certo. No entanto, ele me permite executar quaisquer (bem ... a maioria) scripts bash no meu PC com Windows.
Paul0515
1
Você pode executar todos os scripts bash virtuais - desde que eles não tentem interagir com o sistema operacional host (Windows). WSL bash é um subsistema de virtualização leve que pode executar os binários ELF originais (ou seja, Ubuntu) - mas você não pode escapar disso!
ankostis de
10

Você sempre pode instalar o Cygwin para executar um shell Unix no Windows. Usei o Cygwin extensivamente com o Windows XP.

Michael Shopsin
fonte
Qual pacote eu preciso instalar para executar o UNIX Shell no Cygwin?
Torre de
@rFactor a página do Cygwin inclui um instalador do Windows com todos os componentes necessários.
Spencer Rathbun de
O site Cygwin explica o que foi portado e como instalá-lo. Se tudo o que você deseja é um shell, a instalação básica do Cygwin deve ser suficiente.
Michael Shops em
9

Depois de instalar git-Extions ( https://code.google.com/p/gitextensions/ ), você pode executar o arquivo .sh a partir do prompt de comando. (Não é necessário ./script.sh, apenas execute-o como um arquivo bat / cmd) Ou você pode executá-los em um ambiente bash "completo" usando o shell bash MinGW Git.

Não sou um grande fã do Cygwin (sim, tenho certeza de que é muito poderoso), portanto, executei scripts bash no Windows sem ter que instalá-lo perfeito para mim.

Simon Featherstone
fonte
1
Eu não sei o que são extensões git, mas sua descrição diz que é uma interface gráfica de usuário para git. Como você executaria scripts de shell a partir desta ferramenta? Talvez você queira executá-los com msys bash que inclui?
Variável miserável de
Apenas para confirmar - git-extensions inclui uma cópia do bash e a define no caminho. Eu tentei bashem uma instância do PowerShell, falhei, instalei git-extensions e tentei novamente e funcionou para mim.
rtpHarry
4

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.

rubinorails
fonte
1

Há mais uma possibilidade teórica de fazer isso: as versões profissionais do Windows têm suporte integrado a POSIX, então o bash poderia ter sido compilado para o Windows nativamente.

Pena, mas eu ainda não encontrei um compilado ...

vinhas
fonte
3
O sistema POSIX no Windows foi abandonado [1]. Sendo substituído pelo "Subsistema Windows para Linux", que é baseado no sistema de virtualização leve "Drawbridge" para executar o Ubuntu-bash não modificado. Mas existem algumas nuances, por exemplo, uma vez dentro deste sistema, você não pode mais chamar executáveis ​​do Windows! [1] blogs.msdn.microsoft.com/wsl/2016/04/22/…
ankostis
@ankostis, Na verdade, com CU você pode ...
Paul0515