Sommario
Hai ragione, Git Bash per Windows non è solo bashcompilato per Windows. E 'pacchetto che contiene bash(che è una shell a linea di comando ) e una collezione di altri, utility separate * nix come ssh, scp, cat, finde altri (che si esegue utilizzando la shell), compilato per Windows, e un nuovo terminale di interfaccia della riga di comando finestra chiamata mintty.
In poche parole
Su Windows potresti eseguire comandi come ipconfig /allo format G:utilizzando cmd.exe. Questi comandi sono file eseguibili effettivi in C:\Windows\system32, memorizzati come ipconfig.exee format.comfile. cmd.exeè separato da entrambi e li carica e li esegue su richiesta dell'utente.
ssh, scp, cat, findVengono eseguiti utilizzando bashesattamente nello stesso modo. Di solito sono memorizzati /usr/bininvece che C:\Windows\system32su sistemi * nix, perché Windows e * nix hanno la struttura dei file di sistema organizzata in modo diverso.
Nel caso di Git Bash per Windows, questi programmi si trovano nella cartella di installazione di Git: C:\Program Files\Git\usr\binche si trova anche nell'ambiente emulato di Linux in /usr/bin.
Proprio come essere in grado di eseguire solo cmd.exe* nix non ti consente di fare molto senza le altre utilità di sistema, anche solo essere in grado di eseguire Bash su Windows non è molto utile. Ciò significa che tutti questi comandi extra devono essere raggruppati insieme a Bash per creare un pacchetto software utilizzabile.
Dettagli: applicazioni POSIX su Windows
Normalmente quei comandi extra si trovano sui sistemi * nix e non su Windows, perché sono stati programmati contro l'API di programmazione POSIX (che è ciò che * usa *) e non le API Win32 (che è quello che usa Windows). La documentazione API POSIX è apertamente disponibile, quindi alcune persone l'hanno portata su altri sistemi, incluso Windows. L'implementazione Windows delle API / librerie POSIX è fornita da Cygwine MSYS.
Questo è un po 'simile a quello che fa il progetto Wine , ma converte POSIX-> Windows anziché Windows-> POSIX come fa Wine.
mintty
minttyè incluso perché cmd.exe, nella finestra predefinita della riga di comando di Windows, mancano alcune importanti funzionalità che sono normalmente disponibili sulla maggior parte dei sistemi * nix. Nella maggior parte dei casi, minttyè una scelta migliore per l'esecuzione dei comandi (sicuramente per le utilità fornite con il pacchetto Git Bash per Windows), ma a volte un'applicazione di sistema Windows può funzionare meglio con cmd.exe.