Czy istnieje sposób na uruchamianie skryptów Bash w systemie Windows? [Zamknięte]


100

Kupiłem i używam Windows 7 Ultimate i lubię używać go do tworzenia aplikacji. Jedną z wad (jak w każdym systemie operacyjnym) jest to, że nie mogę uruchamiać skryptów Bash. Czy istnieje sposób uruchamiania skryptów Bash w systemie Windows, instalując jakieś oprogramowanie? W porządku, jeśli nie działa w 100%, ale tak długo, jak dostępna jest najpopularniejsza funkcjonalność, powinna być świetna.


3
@Rajish Not any more…
msanford


1
@msanford, To nie ma sensu. Dlaczego ten wątek może żyć, podczas gdy jego duplikat zostaje zamknięty?
Pacerier,

@Pacerier Duplikat został usunięty, prawie na pewno przez jego autora, ponieważ mody zwykle nie usuwają pytań. Prawdopodobnie do tego odnosił się mój komentarz. Nie wiem, dlaczego autor to usunął. To też było 4 lata temu.
msanford

Odpowiedzi:


80

Zainstaluj Cygwin , który zawiera Bash wśród wielu innych narzędzi GNU i Unix (bez których jest mało prawdopodobne, że bash i tak będzie bardzo przydatny).

Inną opcją jest MSYS MinGW, który zawiera bash i mniejszy zestaw ważniejszych narzędzi, takich jak awk. Osobiście wolałbym Cygwina, ponieważ zawiera on takie ciężkie narzędzia do podnoszenia, jak Perl i Python, bez których nie mogę żyć, podczas gdy MSYS skąpi na nich i zakłada, że ​​zamierzasz je zainstalować samodzielnie.

Zaktualizowano : Jeśli ktoś jest zainteresowany tą odpowiedzią i korzysta z systemu MS-Windows 10, pamiętaj, że MS-Windows 10 ma funkcję „ Podsystem Windows dla Linuksa ”, która - po włączeniu - umożliwia zainstalowanie obrazu Ubuntu w trybie użytkownika i następnie uruchom na tym Bash. Zapewnia to 100% zgodność z Ubuntu do debugowania i uruchamiania skryptów Bash, ale ta konfiguracja jest całkowicie niezależna od systemu Windows i nie można używać skryptów Bash do interakcji z funkcjami systemu Windows (takimi jak procesy i interfejsy API), z wyjątkiem ograniczonego dostępu do plików za pośrednictwem funkcji DrvFS .


2
Aby uzyskać więcej informacji, zobacz dokumentację podsystemu Windows dla systemu Linux (WSL) .
stomia

1
WSL został wycofany z systemu Windows 10 S teraz ... :(
Javier García Manzano

2
Nie jest przestarzałe, to tylko jedna z funkcji, których nie otrzymasz, kupując tańszą wersję systemu Windows „ S mall”. Nie jest również dostępny w Home Edition, IIRC.
Guss,

Git umożliwia łatwe uruchamianie pliku wsadowego z dowolnego miejsca w systemie Windows youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan

@MuhammadFaizanKhan - Port Git na Windows, a także kilka innych aplikacji „zorientowanych na linię poleceń” (Github Desktop jako znaczący przykład) również jest dostarczanych z portem Bash dla Windows. Są to, częściej niż nie, porty MinGW (tj. Skompilowane przy użyciu MinGW i MSYS dla kompatybilności z Posix). W szczególności, jeśli spojrzysz na instalację Git dla Windows, zobaczysz mingw32katalog, który zawiera w zasadzie MSYS. Tak więc Git dla Windows to MinGW, który zawiera Git (opcjonalny w instalatorze MSYS) z „ładniejszym” instalatorem: superuser.com/a/1362301/10942
Guss

30

Najlepszą opcją jaką znalazłem jest Git Windows Wystarczy go zainstalować, a następnie kliknąć prawym przyciskiem myszy i kliknąć „Git Bash Here” to otworzy się okno bashwprowadź opis obrazu tutaj

Spowoduje to otwarcie takiego okna bash: wprowadź opis obrazu tutaj

a polecenia linux działają ...

Wypróbowałem polecenia „sh”, „vi”, „ssh”, „curl” itd


TO - to takie proste, nie?
Kalpesh Soni

tak bardzo przydatne
Garvit Jain

4
Równie dobrze możesz po prostu zainstalować MinGW bez dodatkowego nadmiaru Gita, jeśli chcesz tylko jego powłoki.
Stefan Z Camilleri

Możesz obejrzeć ten minutowy samouczek tutaj youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan

25

Jeśli szukasz czegoś bardziej natywnego, możesz użyć getGnuWin32 do zainstalowania wszystkich narzędzi wiersza poleceń unixa , które zostały przeniesione. To plus winBash zapewnia większość działającego środowiska unixowego . Dodaj console2, aby uzyskać lepszy emulator terminala i prawie nie możesz tego powiedzieć w systemie Windows!

Cygwin jest ogólnie lepszym zestawem narzędzi, ale napotkałem niespodziewane problemy z powodu podziału między nim a oknami. Żadne z tych rozwiązań nie jest jednak tak dobre, jak natywny system Linux.

Możesz przyjrzeć się użyciu virtualbox do tworzenia maszyny wirtualnej z systemem Linux z wybraną dystrybucją. Skonfiguruj go do współdzielenia folderu z systemem operacyjnym hosta i możesz używać prawdziwego środowiska programistycznego Linuksa i udostępniać go Windows. Uważaj tylko na te znaczniki EOL, za każdym razem cię dopadną.


Lub CoLinux: colinux.org
Guss,

colinux nie działa na 64-bitowych (jeszcze)
hexicle

Czy ktoś zna następcę projektu win-bash? Nie jest już aktywnie rozwijany i utknął na bash v 1.14 (właściwy bash, od tego postu, to v 4.4)
Bjartr

@Bjartr Pracownicy firmy Microsoft dodali funkcję umożliwiającą uruchamianie natywnej wersji basha w
Spencer Rathbun

@SpencerRathbun To będzie działać tylko na Windows 10, tak się składa, że ​​jestem na Windows 7. Nie jestem też pewien, jak to działa z mieszaniem plików wykonywalnych linux i Windows oraz ścieżek, więc może nie być lepsze (z mojej perspektywy) niż cygwin bash .
Bjartr

11

Najlepsza opcja? Wsparcie dla Windows 10. Native Bash!


2
Nie, nie najlepsze opcje. Po prostu uruchamiasz Linuksa w ten sposób, a nie oknach bash IN - nie możesz uruchamiać plików wykonywalnych Windows z tego basha (chyba że obejdziesz to cbwin... ale to już jest zbyt duże zamieszanie, aby tylko obejść).
ankostis,

Opcja „najlepsza” to prawdopodobnie kwestia gustu. Więc może masz rację. Jednak umożliwia mi uruchamianie (no cóż ... większości) skryptów bash na moim komputerze z systemem Windows.
Paul0515

1
Możesz uruchamiać wirtualne wszystkie skrypty bash - o ile nie będą próbowały współdziałać z systemem operacyjnym hosta (Windows). WSL bash to lekki podsystem wirtualizacji, który może uruchamiać oryginalne pliki binarne ELF (np. Ubuntu) - ale nie można tego uniknąć!
ankostis

10

Zawsze możesz zainstalować Cygwin, aby uruchomić powłokę Unix pod Windows. Często używałem Cygwin z Windows XP.


Jaki pakiet muszę zainstalować, aby uruchomić UNIX Shell w Cygwin?
Tower

@rFactor strona Cygwin zawiera instalator systemu Windows ze wszystkimi niezbędnymi komponentami.
Spencer Rathbun

Witryna Cygwin wyjaśnia, co zostało przeniesione i jak to zainstalować. Jeśli chcesz tylko powłoki, podstawowa instalacja Cygwin powinna wystarczyć.
Michael Shops w dniu

9

Po zainstalowaniu git-Extensions ( https://code.google.com/p/gitextensions/ ) możesz uruchomić plik .sh z poziomu wiersza poleceń. (Nie ./script.sh wymagany, po prostu uruchom go jak plik bat / cmd) Lub możesz je uruchomić w „pełnym” środowisku bash za pomocą powłoki bash MinGW Git.

Nie jestem wielkim fanem Cygwina (tak, jestem pewien, że jest naprawdę potężny), więc uruchamianie skryptów bash w systemie Windows bez konieczności instalowania go idealnie dla mnie.


1
Nie wiem, co to są rozszerzenia git, ale z opisu wynika, że ​​jest to graficzny interfejs użytkownika dla git. Jak uruchomić skrypty powłoki z tego narzędzia? Być może masz na myśli uruchomienie ich za pomocą msys bash, który zawiera?
Nędzna zmienna

Dla potwierdzenia - git-extensions zawiera kopię basha i ustawia ją w ścieżce. Próbowałem bashz instancji PowerShell, nie powiodło się, zainstalowałem rozszerzenia git i ponowiłem próbę i zadziałało.
rtpHarry

4

Aby działać natywnie, prawdopodobnie będziesz musiał użyć Cygwin (bez którego nie mogę żyć w systemie Windows). Więc od razu, +1 dla Cygwina. Wszystko inne byłoby niecywilizowane.

JEDNAK to powiedziawszy, ostatnio zacząłem używać kombinacji narzędzi do łatwego PORTOWANIA skryptów Bash w systemie Windows, aby moi współpracownicy z systemem anty-Linux mogli z łatwością wykonywać złożone zadania, które są lepiej obsługiwane przez narzędzia GNU.

Zwykle mogę przenieść skrypt Bash do Batch w bardzo krótkim czasie, otwierając oryginalny skrypt w jednym okienku i pisząc plik Batch w drugim panelu. Narzędzia, których używam, to:

Wolę UnxUtils od GnuWin32, ponieważ [ktoś, proszę, popraw mnie, jeśli się mylę] Narzędzia GnuWin normalnie muszą być zainstalowane, podczas gdy UnxUtils to samodzielne pliki binarne, które działają od razu po wyjęciu z pudełka.

Jednak CoreUtils nie zawiera niektórych znanych narzędzi * NIX, takich jak cURL, który jest również dostępny dla systemu Windows (curl.haxx.se/download.html).

Tworzę folder dla projektów i zawsze SET PATH =. w pliku .bat, tak aby żadne inne polecenia poza podstawowymi poleceniami powłoki CMD nie były przywoływane (a także określone pliki UnxUtils wymagane w folderze projektu, aby skrypt usługi Batch działał zgodnie z oczekiwaniami).

Następnie kopiuję potrzebne pliki CoreUtils .exe do folderu projektu i odnoszę się do nich w pliku .bat, na przykład „. \ Curl.exe -s google.com” itp.

Program Bat2Exe jest miejscem, w którym dzieje się magia. Po zakończeniu tworzenia pliku wsadowego i pomyślnym przetestowaniu go uruchom Bat2Exe.exe i określ ścieżkę do folderu projektu. Bat2Exe utworzy następnie plik binarny Windows zawierający wszystkie pliki w tym określonym folderze i użyje pierwszego pliku .bat, który napotka, jako głównego pliku wykonywalnego. Możesz nawet dołączyć plik .ico, który będzie używany jako ikona dla końcowego generowanego pliku .exe.

Wypróbowałem kilka tego typu programów i wiele z wygenerowanych plików binarnych zostało oznaczonych jako szkodliwe oprogramowanie, ale wersja Bat2Exe, do której się odwołałem, działa doskonale, a wygenerowane pliki .exe są skanowane całkowicie czysto.

Wynikowy plik wykonywalny można uruchomić interaktywnie przez dwukrotne kliknięcie lub uruchomić z wiersza poleceń z parametrami itp., Tak jak zwykły plik wsadowy, z wyjątkiem tego, że będziesz w stanie wykorzystać funkcjonalność wielu narzędzi, z których normalnie będziesz korzystać w Bash.

Zdaję sobie sprawę, że trwa to dość długo, ale jeśli mogę trochę odbiegać od tematu, napisałem również skrypt Batch, który nazywam PortaBashy, który moi współpracownicy mogą uruchomić z udziału sieciowego, który zawiera przenośną instalację Cygwin. Następnie ustawia zmienną% PATH% na normalny format * NIX (/ usr / bin: / usr / sbin: / bin: / sbin) itd. I może albo uruchomić się w samej powłoce Bash, albo uruchomić mocniejszy i ładny emulator terminala MinTTY.

Zawsze istnieje wiele sposobów na osiągnięcie tego, do czego dążysz; to tylko kwestia połączenia odpowiednich narzędzi do pracy, a często sprowadza się to do osobistych preferencji.


1

Jest jeszcze jedna teoretyczna możliwość, aby to zrobić: profesjonalne wersje systemu Windows mają wbudowaną obsługę POSIX, więc bash mógł zostać skompilowany dla systemu Windows natywnie.

Szkoda, ale sam nadal nie znalazłem skompilowanego ...


3
POSIX sybsystem na Windows został porzucony [1]. Zastąpiony przez „Podsystem Windows dla Linuksa”, który jest oparty na lekkim systemie wirtualizacji „Drawbridge” do uruchamiania niezmodyfikowanego Ubuntu-bash. Ale są pewne niuanse, np. W tym systemie nie można już wywoływać plików wykonywalnych systemu Windows! [1] blogs.msdn.microsoft.com/wsl/2016/04/22/…
ankostis

@ankostis, Właściwie z CU możesz ...
Paul0515
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.