Резюме
Вы правы, 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
.