Resumo
Você está correto, Git Bash para Windows não é apenas bash
compilado para Windows. É um pacote que contém bash
(que é um shell de linha de comando ) e uma coleção de outros utilitários * nix separados, como ssh
, scp
, cat
, find
e outros (que você executa usando o shell), compilados para o Windows e uma nova janela de terminal de linha de comandos chamada mintty
.
Em poucas palavras
No Windows, você pode executar comandos como ipconfig /all
ou format G:
usando cmd.exe
. Esses comandos são arquivos executáveis reais em C:\Windows\system32
, armazenados como ipconfig.exe
e format.com
files. cmd.exe
é separado de ambos e carrega e os executa a pedido do usuário.
ssh
, scp
, cat
, find
são executados usando bash
exatamente da mesma maneira. Eles geralmente são armazenados em /usr/bin
em vez de C:\Windows\system32
em sistemas nix, porque o Windows e o * nix têm sua estrutura de arquivos de sistema organizada de maneira diferente.
No caso do Git Bash para Windows, esses programas estão localizados na pasta de instalação do Git: C:\Program Files\Git\usr\bin
, que também pode ser encontrado no ambiente Linux emulado em /usr/bin
.
Assim como ser capaz de rodar cmd.exe
no * nix não permite que você faça muito sem os outros utilitários do sistema, apenas ser capaz de executar o Bash no Windows também não é muito útil. Isso significa que todos esses comandos extras precisam ser empacotados junto com o Bash para criar um pacote de software utilizável.
Detalhes: aplicativos POSIX no Windows
Normalmente, esses comandos extras seriam encontrados nos sistemas * nix e não no Windows, porque foram programados contra a API de programação POSIX (que é o que * nix usa) e não as APIs do Win32 (que é o que o Windows usa) . A documentação da API do POSIX está disponível abertamente, então algumas pessoas a transportaram para outros sistemas, incluindo o Windows. A implementação do Windows de APIs / bibliotecas POSIX é fornecida por Cygwin
e MSYS
.
Isso é semelhante ao que o projeto Wine faz, mas converte o POSIX- > Windows em vez do Windows- > POSIX como o Wine faz.
menta
mintty
está incluído porque cmd.exe
, a janela padrão da linha de comando do Windows, está faltando alguns recursos importantes que normalmente estão disponíveis na maioria dos sistemas * nix. Na maioria dos casos, mintty
é uma opção melhor para executar comandos (certamente para os utilitários fornecidos com o pacote Git Bash for Windows), mas ocasionalmente um aplicativo do sistema Windows pode funcionar melhor com cmd.exe
.