Felizmente, tenho usado o Git e o Git Bash em https://git-scm.com/ . Há uma página com mais informações aqui: https://git-for-windows.github.io/ .
Ontem, tive um problema rsync
e comecei a me aprofundar no Git Bash para Windows. Percebi que nem tenho certeza do nome do programa Bash, porque ele está incluído no download do git-scm. Estou chamando-o de Git Bash para Windows, o que parece razoável.
Ao examinar "O que é Git Bash", li sobre Cygwin e uma coisa diferente chamada mysys2 , que parece estar relacionada mysysGit
, e vi referências a MinGW
. Mas, então eu vi no FAQ que mintty é o terminal padrão do Git Bash.
Parece que o aplicativo Bash é na verdade um pacote especialmente curadoria de outras coisas (principalmente listadas acima) que estão disponíveis independentemente.
Fundamentalmente, gostaria de saber qual é a base que faz com que os comandos * nix ssh
scp
cat
ls
funcionem no Git Bash para Windows?
(Acho que uma boa resposta ajudaria alguém a entender, em termos gerais, como esses componentes se encaixam e entender as palavras certas para os componentes, mas não quero interromper o formato de pergunta / resposta do SO).
rsync
pergunta original !!Respostas:
Sumário
Você está correto, o Git Bash para Windows não é apenas
bash
compilado para Windows. Empacotá-lo de que contémbash
(que é um shell de linha de comando ) e uma coleção de outros, utilitários separados * nix comossh
,scp
,cat
,find
e outros (que você executar usando o shell), compilado para Windows, e um novo terminal de interface de linha de comando janela chamadamintty
.Em poucas palavras
No Windows, você pode executar comandos como
ipconfig /all
ouformat G:
usandocmd.exe
. Esses comandos são arquivos executáveis reais emC:\Windows\system32
, armazenados comoipconfig.exe
eformat.com
arquivos.cmd.exe
é separado de ambos e carrega e os executa a pedido do usuário.ssh
,scp
,cat
,find
São executados usandobash
exatamente da mesma maneira. Eles geralmente são armazenados em sistemas * nix,/usr/bin
e não emC:\Windows\system32
sistemas * nix, porque o Windows e o * nix têm sua estrutura de arquivos do sistema organizada de maneira diferente.No caso do Git Bash for Windows, esses programas estão localizados na pasta de instalação do Git:,
C:\Program Files\Git\usr\bin
que também pode ser encontrada no ambiente Linux emulado em/usr/bin
.Assim como poder rodar
cmd.exe
no * nix não permite muito sem os outros utilitários do sistema, apenas rodar o Bash no Windows também não é muito útil. Isso significa que todos esses comandos extras precisam ser agrupados 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 na API de programação POSIX (que é o que o * nix usa) e não nas APIs do Win32 (que é o Windows que usa). A documentação da API POSIX está disponível abertamente, portanto, algumas pessoas a portaram para outros sistemas, incluindo o Windows. A implementação do Windows de APIs / bibliotecas POSIX é fornecida por
Cygwin
eMSYS
.Isso é semelhante ao que o projeto Wine faz, mas converte POSIX-> Windows em vez de Windows-> POSIX como o Wine.
hortelã
mintty
está incluído porquecmd.exe
, na janela de linha de comando padrão do Windows, faltam 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 que acompanham o pacote Git Bash for Windows), mas ocasionalmente um aplicativo de sistema Windows pode funcionar melhorcmd.exe
.fonte
ssh
scp
cat
ls
funcionem no Git Bash for Windows?" . A publicação de Pabru responde bem às duas perguntas e é uma resposta correta para qualquer pessoa que possa ter a mesma pergunta (conforme indicado); portanto, ao aceitá-la, você está ajudando outros usuários. Você tentou postar uma nova pergunta para orsync
problema?fundo
Eu sou o OP. Originalmente, eu queria apenas saber o nome formal dessa coisa que estava usando.
Agora acho que o nome é "Git Bash for Windows". Infelizmente, a resposta completa é complicada porque essa coisa é realmente muitas coisas.
A resposta principal de 2016 originalmente não foi útil para mim, mas foi muito editada e foi ficando cada vez mais útil. Ainda assim, ele perde parte da minha pergunta original.
O início:
msysgit
Na verdade, o começo é provavelmente
MSYS
, mas realmenteMSYS2
. O termo "msysgit" é um bom termo para fazer uma pesquisa para descobrir o que está acontecendo quando XYZ dá errado; coisas como "onde no @ * #! todas as configurações de autocrlf são armazenadas?!?!?!?"O README ( https://github.com/msysgit/msysgit ) no projeto msysgit explica o relacionamento entre os componentes:
BTW, apenas no caso de o README completo ser excluído, copiei-o para uma essência .
A janela do terminal:
mintty
A outra parte do Git Bash para Windows é a linha de comando real do Windows, mintty. Ainda bem que existe, mas não é algo que eu precise pesquisar no Google.
Referências para MSYS2
O wiki deles é um verdadeiro tesouro de detalhes sobre o ambiente MSYS2: https://github.com/msys2/msys2/wiki
Na introdução, esta parte é mais relevante para minha pergunta original:
Esta discussão também é muito útil: https://sourceforge.net/p/msys2/discussion/general/thread/dcf8f4d3/#8473/588e
fonte