Резюме
Вы правы, Git Bash для Windows не просто bashскомпилирован для Windows. Это пакет , который содержит bash(который является оболочка командной строки ) и набор другой, отдельной * NIX утилиты , такой как ssh, scp, cat, findи других (которые вы проводили с использованием оболочки), скомпилированной для Windows, и новый терминал интерфейса командной строки окно называется mintty.
В двух словах
В Windows вы можете запускать такие команды, как ipconfig /allили format G:используя 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.