Jakie są różnice między Windows Bash a Cygwin?

65

Jakie są różnice między Windows Bash a Cygwin?

Nowa aktualizacja systemu Windows z „Linux” Bash jest nowa, ale jakie są różnice w stosunku do Cygwin, które mogą sprawić, że wybierzesz jedną z nich?

Martijn van Wezel
źródło
1
Podejrzewam, że Windows Bash jest lepiej zintegrowany i lepiej obsługiwany przez Microsoft.
Panther
2
Myślę, że to pytanie dotyczy tematu, ponieważ Windows Bash jest produktem obsługiwanym przez Canonical. To może być nie na temat, być może opinia, a nie wsparcie.
Panther

Odpowiedzi:

65

Cygwin to świetne narzędzie, jeśli chcesz żyć całkowicie w systemie Windows i chcesz prowadzić / automatyzować zadania systemu Windows za pomocą skryptów bash. Jednak Cygwin nie jest w stanie uruchomić niemodyfikowanych plików binarnych systemu Linux.

Właśnie tam wkracza WSL:

Podsystem Windows dla systemu Linux (WSL) to nowa warstwa jądra systemu Windows, która ma na celu zapewnienie wysokiego stopnia zgodności z ABI jądra systemu Linux. Pozwala to na uruchamianie natywnych, niezmodyfikowanych plików binarnych Linux ELF64 na WSL.

W ten sposób WSL może uruchamiać oryginalną dystrybucję Ubuntu dla użytkowników i dowolne pakiety, które pobierasz z apt-get lub .deb z dowolnego miejsca, bez żadnych zmian.

Celem WSL jest umożliwienie programistom pracującym w systemie Windows uruchamiania wielu narzędzi i pracy nad wieloma projektami, które zależą od plików binarnych systemu Linux, funkcji, zachowań, układu systemu plików, modelu procesu itp.

Chociaż WSL jest wciąż na wczesnym etapie wdrażania, ciężko pracujemy, aby poprawić szerokość i głębokość naszych wdrożeń syscall, aby stale poprawiać zdolność WSL do uruchamiania coraz większego zestawu narzędzi i obsługiwać szybko rosnącą liczbę węzłów Ruby, Java, itp. pakiety i projekty.


Aktualizacja: 2017-09-07

Od czasu napisania powyższego, wysłaliśmy aktualizację Windows 10 Creators Update, która MASYWNIE poprawia kompatybilność WSL z WIELE narzędzi, które chcesz / musisz uruchomić.

Prace rozwojowe również trwały bez przerwy, a przez ostatnie kilka miesięcy wysyłaliśmy kompilacje testerów Win10 w drodze do aktualizacji Fall Creators Update (FCU) w październiku 2017 r.

W FCU dodajemy możliwość instalowania i uruchamiania więcej niż jednej dystrybucji obok siebie: Ubuntu, openSUSE i SLES są obecnie dostępne, z Fedorą i innymi w drodze. WSL obsługuje teraz również komunikatory szeregowe USB oraz montaż pamięci USB i udziałów sieciowych, a także dalsze ulepszenia naszych połączeń systemowych, które poprawiają kompatybilność z większą liczbą narzędzi.


Aktualizacja: 22.08.2019

Od pierwszego ogłoszenia i wydania WSL minęło bardzo dużo czasu, a następnie dodaliśmy obsługę wielu dystrybucji za pośrednictwem sklepu i ogłosiliśmy WSL v1.0 HTH.

Podczas kompilacji 2019 ogłosiliśmy nowy terminal Windows ( tutaj wideo sesji terminalu ) i WSL 2 ( tutaj wideo sesji WSL 2 ), który wprowadza zupełnie nowe podejście do uruchamiania Linuksa w systemie Windows.

Aby uzyskać więcej informacji i przyszłych aktualizacji, odwiedź blog wiersza polecenia systemu Windows co kilka tygodni, w którym publikujemy wiele powiązanych wiadomości

Rich Turner
źródło
9
Od lat jestem użytkownikiem cygwina. WSL to fantastyczny pomysł, który przeważnie działa dobrze ... jednak na tym etapie prędkość dostępu do plików jest niska. Powiem zbyt wolno. Wykonywanie nawet średnich operacji z użyciem czegoś takiego jak GIT zajmuje ponad 30 sekund w porównaniu z pod sekundą w Cygwin. Mam nadzieję, że uda im się to naprawić.
Damien Sawyer,
9
Disk perf to znany problem: pracujemy nad kilkoma ulepszeniami perf dla Win10 CU, a bardziej znaczące ulepszenia pojawią się później w 2017 roku.
Rich Turner
3
Fantastyczny. Nie mogę się doczekać. To będzie świetny produkt :-)
Damien Sawyer
2
@DamienSawyer minęło ponad 6 miesięcy. Czy Twoje skargi dotyczące prędkości zostały zmniejszone, czy nadal są takie same?
WinEunuuchs2Unix
3
@RichTurner wtedy uruchomię aktualizację: D
Martijn van Wezel
15

Podsystem Windows dla systemu Linux

Używam WSL pod Windows 10 od około kilku miesięcy. Wreszcie mogę uruchomić system Windows w celu grania i nadal uzyskiwać dostęp do monitu bash oraz uruchamiać CLI i wiele programów GUI. Istnieją ograniczenia, takie jak żaden ze znanych katalogów wirtualnych jądra Linux. Konieczne jest zaplanowanie udostępniania tego samego skryptu Bash między Ubuntu i WSL na maszynie z podwójnym uruchomieniem.

Jest wiele rzeczy, które chciałbym poprawić, ale mogę z tym żyć przez około rok.

Zamknięte źródło

Jedną rzeczą do zapamiętania jest to, że Microsoft jest systemem zamkniętym i nie ma się w nim wielu osób piszących aktualizacje tak, jak lubisz w Linuksie. Ale wszystkie rzeczy uważane są za zakup nowego laptopa, który i tak ma system Windows 10, więc można powiedzieć, że jest co najmniej „darmowy” :)

Cygwin jest kontrolowany przez Red Hat Linux, który również nie jest znany z rozdawania rzeczy za darmo. Ich „darmowa” dystrybucja Linuksa Fedora wydaje się dla niektórych „polem testowym” .

Cykle konserwacji

Cygwin ma 15 lat aktualizacji. Godne uwagi jest to, że ten sam kierownik projektu istnieje od 2003 roku. Jest wielu pełnoetatowych opiekunów i wielu innych wolontariuszy.

WSL zapewnia ważne aktualizacje dwa razy w roku każdej wiosny i jesieni. Cotygodniowe drobne aktualizacje są dostępne dla osób z listy subskrypcji programistów. Chociaż Microsoft ma zasoby, które mogą zaangażować tysiące ludzi w rozwój WSL, wydaje się, że możesz policzyć członków zespołu palcami.

Problemy z prędkością

Zobaczysz wiele skarg dotyczących prędkości WSL. Na przykład malowanie ekranu trwa wiele razy dłużej w systemie Windows 10 w porównaniu z Ubuntu 16.04, tzn. Można zobaczyć ruch kursora w systemie Windows 10:

WSL bash startup.gif

Malowanie ekranu powitalnego WSL Bash zajmuje około 5 sekund. Dla porównania jest to około 1 1/2 sekundy dla tego samego ekranu powitalnego w Ubuntu 16.04:

Terminal Ubuntu splash.gif

Cygwin ma swój własny udział w skargach dotyczących prędkości w Bash .


Oryginalny komentarz poniżej w celach historycznych.

Odpowiedź tutaj ma rok, więc myślę, że trochę aktualizacji jest w porządku. W przypadku Windows 10 Home, jeśli jest to 32-bitowy system Windows, oznacza to, że nie będzie uruchamiał 64-bitowego podsystemu Ubuntu / Windows, jak mówi nam Microsoft: ( podsystem Windows Linux w win10 HOME BASIC ).

To jak spełnienie marzeń, uruchamianie Ubuntu w systemie Windows z doskonałą obsługą gier dla Nvidii, ale zanim skończysz i kupisz nowego (lub używanego) laptopa, upewnij się, że ma on Windows 10 64-bitowy, a nie 32-bitową wersję domową, jeśli chcesz uruchomić Ubuntu / Linux natywnie pod Windows. W witrynach firmy Microsoft faktycznie odnoszą się do wydania Windows Anniversary jako warunku wstępnego do uruchomienia systemu Windows Subsystem dla systemu Linux.


Jeśli jednak nie chcesz wydać 200 $ + na Windows 10 i masz starszy laptop z systemem Windows 8.1 64-bitowym, tak jak ja, i masz jeszcze starszy laptop z systemem Windows Vista 64-bitowym jak ja, to Cygwin jest odpowiedź.

Cygwin obsługuje więcej wersji systemu Windows, ponieważ ich listy witryn internetowych :

Można oczekiwać, że Cygwin będzie działał na wszystkich nowoczesnych, wydanych wersjach systemu Windows. Stan styczeń 2016 obejmuje Windows Vista, Windows Server 2008 i wszystkie nowsze wersje systemu Windows do Windows 10 i Windows Server 2016. 32-bitowa wersja Cygwin działa również w 32-bitowym środowisku WOW64 na wydanych 64-bitowych wersjach systemu Windows, 64 wersja bitowa oczywiście tylko w 64-bitowym systemie Windows.

Pamiętaj, że Cygwin może zrobić tylko tyle, ile obsługuje podstawowy system operacyjny. Z tego powodu Cygwin będzie zachowywał się inaczej i wykazywał różne ograniczenia w różnych wersjach systemu Windows.

WinEunuuchs2Unix
źródło
2
Pytanie brzmi, jakie są różnice między cygwin i bash dla Windows. Cygwin nie jest nawet wspomniany w twojej odpowiedzi. Proszę wyjaśnić, w jaki sposób odpowiada to pytanie.
Seth
@Seth Wskazałem, w jaki sposób WSL jest specyficzny dla wersji, podczas gdy Cygwin działa na wszystkich obsługiwanych wersjach systemu Windows. Dzięki za zwrócenie uwagi na mój nadzór.
WinEunuuchs2Unix
1
Wyjaśniliśmy, że WSL wymaga 64-bitowego systemu Windows i jest dostępny w każdej jednostce SKU systemu Windows 10, z wyjątkiem bieżącego LTSB - WSL zostanie dodany do następnej wersji LTSB. WSL zostanie również dołączony do systemu Windows Server wydanego jesienią 2017 r.
Rich Turner,
@RichTurner Twoja strona wyraźnie to określa. Nie jest dla mnie jasne (i nie twoja wina), dlaczego sprzedawca sprzedaje czterordzeniowy procesor i7 7700 z kartą graficzną Nvidia 1050 i 12 GB systemowej pamięci RAM z systemem Windows 10 Home. Ktoś usunął oryginalny link, ale oto on . Nie wyjaśniają, że jest to wersja 32-bitowa. Czy mówisz, że każdy system Windows 10 jest 64-bitowy?
WinEunuuchs2Unix
1
Jest sprzedawany jako komputer do gier. Ponieważ większość graczy nie potrzebuje dodatkowych funkcji w Win10 Pro, zdecydowała się na Home, aby uchronić klienta przed płaceniem za coś, czego prawdopodobnie nie będzie potrzebował. Windows 10 występuje również w 32-bitowych wariantach dla tych, którzy tego chcą, ale byłbym ZNIESZONY, gdyby ktoś sprzedał komputer z> 4 GB pamięci RAM i zainstalował 32-bitowy system operacyjny, ponieważ system operacyjny i aplikacje, które on uruchamia, nie byłyby w stanie aby uzyskać dostęp do czegokolwiek> 4 GB.
Rich Turner,