Резюме
Вы правы, Git Bash для Windows - это не просто bash скомпилированный для Windows. Это пакет, который содержит bash (который является оболочкой командной строки) и набор других, отдельных * nix-утилит, таких как ssh , scp , cat , find и другие (которые вы запускаете с помощью оболочки), скомпилированные для Windows, и новый окно терминала интерфейса командной строки называется mintty .
В двух словах
В Windows вы можете запускать такие команды, как ipconfig /all или format G: using cmd.exe . Эти команды являются действительными исполняемыми файлами в C:\Windows\system32 , которые хранятся как файлы ipconfig.exe и format.com . cmd.exe отдельно от обоих и загружает и запускает их по запросу пользователя.
ssh , scp , cat , find запускаются с использованием bash точно так же. Они обычно хранятся в /usr/bin а не в C:\Windows\system32 в системах * nix, поскольку структура системных файлов в Windows и * nix организована по-разному.
В случае Git Bash для Windows эти программы находятся в папке установки Git: C:\Program Files\Git\usr\bin , которую также можно найти в эмулируемой среде Linux в каталоге /usr/bin .
Точно так же, как возможность просто запустить cmd.exe в * nix не позволяет вам много делать без других системных утилит, просто возможность запускать Bash в Windows тоже не очень полезна. Это означает, что все эти дополнительные команды должны быть объединены вместе с Bash, чтобы создать полезный программный пакет.
Подробности: приложения POSIX в Windows
Обычно эти дополнительные команды можно найти в системах * nix, а не в Windows, потому что они были запрограммированы в соответствии с API программирования POSIX (который используется в * nix), а не в API Win32 (который используется в Windows). Документация по POSIX API доступна в открытом доступе, поэтому некоторые люди перенесли ее на другие системы, включая Windows. Windows-реализация API / библиотек POSIX предоставляется Cygwin и MSYS .
Это похоже на то, что делает проект Wine , но он конвертирует POSIX-> Windows, а не Windows-> POSIX, как Wine.
mintty
mintty включен потому, что в cmd.exe , окне командной строки Windows по умолчанию, отсутствуют некоторые важные функции, которые обычно доступны в большинстве систем * nix. В большинстве случаев mintty - лучший выбор для запуска команд (конечно, для утилит, поставляемых с пакетом Git Bash для Windows), но иногда системное приложение Windows может лучше работать с cmd.exe .