Czy w systemie Windows 10 git-bash i cygwin shell mogą robić to samo?
Co jedno może zrobić, a drugie nie?
Na przykład,
- Czy jako powłoki mogą działać tak samo jak bash?
Jakie programy i polecenia mogą działać w jednym, ale nie w drugim?
Na przykład w git-bash nie mogę uruchomić komendy Windows:
$ reg add "HKCU\Software\Microsoft\VisualStudio\14.0_Config\MSBuild" /v EnableOutOfProcBuild /t REG_DWORD /d 0 /f ERROR: Invalid syntax. Type "REG ADD /?" for usage.
Ale w Cygwin działa dobrze
$ reg add "HKCU\Software\Microsoft\VisualStudio\14.0_Config\MSBuild" /v EnableOutOfProcBuild /t REG_DWORD /d 0 /f The operation completed successfully.
pierwotnie myślałem, że zarówno git-bash, jak i cygwin mogą uruchamiać programy w systemie Windows. Dlaczego więc git-bash nie działa, podczas gdy cygwin może?
Dzięki.
Te dwa elementy nakładają się na siebie. Ale ostatecznie są to różne implementacje bash / will w systemie Windows.
Cygwin ma duży pakiet opcjonalnego oprogramowania, które można zainstalować, w tym wiele różnych języków programowania, kompilatorów, różnych narzędzi sieciowych i tak dalej. Możesz także zainstalować X i wiele aplikacji X.
Dzięki git bash dostajesz to, co dostajesz, a nieco trudniej jest zainstalować dodatkowe narzędzia. Tak naprawdę mam oba na swojej stacji roboczej, ponieważ są rzeczy, których nie mogę zrobić w git bash. Odniosłem bardzo mieszane sukcesy dzwoniąc do aplikacji cygwin z okna git bash.
Ponadto, cygwin to środowisko z pełnym posixem, nie tylko interpreter bash, więc często możesz skompilować w nim nie rozproszony kod, więc na przykład, jeśli znalazłeś źródło miłego narzędzia dla Linuksa, które zwykle znalazłeś, możesz zwykle skompilować to narzędzie dla Cygwin. Nie tyle w przypadku git bash. I jak wspomniałem powyżej, nawet jeśli skompilujesz to dla Cygwina, prawdopodobnie nie zadziała w git bash.
Poza tym są w większości bardzo podobne. Zabawnie jest widzieć, że git bash zawiera
cygpath
polecenie do konwersji ścieżek plików Windows i Posix, ponieważ git bash afaik jest oparty na MinGW, co stanowi odrębne rozwiązanie od Cygwin.źródło
Właśnie znalazłem różnicę: mogę uruchomić ten skrypt w Git bash, ale nie w Cygwin.
W Git bash przetwarza moje pliki xml, ale w Cygwin daje mi błąd:
bash --version
w Git bash:w Cygwin:
źródło
ls
w bieżącym katalogu za pomocą polecenia.find
ten sposób bez cudzysłowu.) (2) Nazwy plików są w rzeczywistości * .XML (wielkimi literami), a opcja powłokinocaseglob
jest ustawiona w procesie tworzenia powłoki git globs nie rozróżnia wielkości liter (co ma pewien sens w systemie Windows).