Există o modalitate de a rula scripturi Bash pe Windows? [închis] (Programare, Windows, Bash)

Turnul a intrebat.

Am cumpărat și folosesc Windows 7 Ultimate și îmi place să îl folosesc pentru a dezvolta aplicații. Una dintre părțile negative (ca la orice sistem de operare) este că nu pot rula scripturi Bash. Există o modalitate de a rula scripturi Bash pe Windows prin instalarea unor programe? Este în regulă dacă nu funcționează 100%, dar atâta timp cât cele mai comune funcționalități sunt disponibile ar trebui să fie grozav.

Comentarii

  • @Rajish Nu mai este… –  > Por msanford.
  • win-bash.sourceforge.net –  > Por meain.
  • @msanford, Acest lucru nu are sens. De ce este acest fir de discuție lăsat să trăiască în timp ce duplicatul său este închis? –  > Por Pacerier.
  • @Pacerier Duplicatul a fost șters, aproape cu siguranță de către autorul său, deoarece moderatorii au tendința de a nu șterge întrebările. Probabil că la asta se referea comentariul meu. Nu știu de ce l-a șters autorul. De asemenea, a fost acum 4 ani. –  > Por msanford.
  • rulați bash pe windows10 –  > Por LF00.
8 răspunsuri
Guss

Instalați Cygwin, , care include Bash printre multe alte utilități GNU și Unix (fără de care este puțin probabil ca bash să fie oricum foarte util).

O altă opțiune este MSYS de la MinGW care include bash și un set mai mic de utilitare mai importante, cum ar fi awk. Personal, aș fi preferat Cygwin, deoarece include instrumente grele precum Perl și Python, fără de care nu pot trăi, în timp ce MSYS se zgârcește la acestea și presupune că le veți instala singur.

Actualizat:Dacă cineva este interesat de acest răspuns și rulează MS-Windows 10, vă rugăm să rețineți că MS-Windows 10 are un „Subsistem Windows pentru Linux” care – odată activată – vă permite să instalați o imagine Ubuntu în modul utilizator și apoi să rulați Bash pe aceasta. Acest lucru oferă o compatibilitate de 100% cu Ubuntu pentru depanarea și rularea scripturilor Bash, dar această configurație este complet independentă de Windows și nu puteți utiliza scripturile Bash pentru a interacționa cu caracteristicile Windows (cum ar fi procesele și API-urile), cu excepția accesului limitat la fișiere prin intermediul funcției DrvFS caracteristică.

Comentarii

  • Consultați Documentația Windows Subsystem for Linux (WSL) pentru mai multe informații. –  > Por stomy.
  • WSL a fost eliminat pentru Windows 10 S acum… 🙁 – –  > Por Javier García Manzano.
  • Nu este depreciat, este doar una dintre caracteristicile pe care nu le obțineți dacă cumpărați Windows-ul mai ieftin „Sediția mall”. De asemenea, nu este disponibilă nici în ediția Home Edition, IIRC. –  > Por Guss.
  • @MuhammadFaizanKhan – Portarea Git pentru Windows, precum și alte câteva aplicații „orientate spre linia de comandă” (Github Desktop ca exemplu notabil) vin, de asemenea, cu o portare Windows a Bash. Acestea, de cele mai multe ori, sunt porturi MinGW (adică compilate folosind MinGW și MSYS pentru compatibilitate Posix). În mod specific, dacă vă uitați la instalarea Git pentru Windows, veți vedea mingw32 care conține practic MSYS. Așadar, Git pentru Windows este MinGW care include Git (opțional în programul de instalare MSYS) cu un program de instalare mai „frumos”: superuser.com/a/1362301/10942 –  > Por Guss.
  • De asemenea: github.com/msysgit/msysgit/wiki/Relationship-to-Git-for-Windows –  > Por Guss.
Garvit Jain

Cea mai bună opțiune pe care am putut-o găsi este Git Windows Doar instalați-l și apoi faceți clic dreapta pe și faceți clic pe „Git Bash aici” acest lucru va deschide o fereastră bash

Acest lucru va deschide o fereastră bash ca aceasta:

și comenzile linux funcționează…

Am încercat comenzile ‘sh’ , ‘vi’ , ‘ssh’ , ‘curl’ ,etc… comenzi

Comentarii

  • ESTE – este atât de simplu, nu? –  > Por Kalpesh Soni.
  • Da, foarte util.  > Por Garvit Jain.
  • Ai putea la fel de bine să instalezi MinGW fără blocajul suplimentar al lui Git dacă tot ce vrei este shell-ul său. –  > Por Stefan Z Camilleri.
Spencer Rathbun

Dacă sunteți în căutarea a ceva mai nativ, puteți folosi getGnuWin32 pentru a instala toate instrumentele de linie de comandă unix care au fost transferate. În plus winBash vă oferă majoritatea unui mediu unix funcțional. Adăugați consola2 pentru un emulator de terminal mai bun și aproape că nu vă puteți da seama că sunteți pe Windows!

Cygwin este un set de instrumente mai bun în general, dar m-am trezit cu probleme surprinzătoare din cauza diferenței dintre el și Windows. Totuși, niciuna dintre aceste soluții nu este la fel de bună ca un sistem Linux nativ.

Poate doriți să vă gândiți să utilizați virtualbox pentru a crea o VM linux cu distribuția aleasă de dvs. Configurați-l pentru a partaja un dosar cu os-ul gazdă și puteți folosi un mediu de dezvoltare linux adevărat și puteți partaja cu windows. Aveți grijă doar la indicatoarele EOL, vă prind de fiecare dată.

Comentarii

  • Sau CoLinux : colinux.org –  > Por Guss.
  • colinux nu funcționează pe 64 de biți (încă) –  > Por hexicle.
  • Știe cineva de un succesor al proiectului win-bash? Acesta nu mai este dezvoltat în mod activ și este blocat pe bash v 1.14 (bash propriu-zis, la data acestei postări, este v 4.4) –  > Por Bjartr.
  • @Bjartr Cei de la Microsoft au adăugat o funcție care să permită un versiune nativă de bash să ruleze pe Windows 7 –  > Por Spencer Rathbun.
  • @SpencerRathbun Asta va rula numai pe Windows 10, se întâmplă să fiu pe Windows 7. De asemenea, nu sunt sigur cum se joacă cu amestecul de executabile și căi de acces pentru linux și Windows, așa că s-ar putea să nu fie mai bun (din punctul meu de vedere) decât cygwin bash. –  > Por Bjartr.
Paul0515

Cea mai bună opțiune? Windows 10. Suport nativ pentru Bash!

Comentarii

  • Nu, nu este cea mai bună opțiune. În acest fel, doar rulați linux în acest fel, nu bash ÎN Windows – nu puteți lansa executabile Windows din acel bash (cu excepția cazului în care îl rezolvați cu cbwin…dar asta e deja prea multă agitație pentru o simplă soluție de rezolvare). –  > Por ankostis.
  • ‘Cea mai bună’ opțiune este probabil o chestiune de gust. Așa că poate că ai dreptate. Cu toate acestea, îmi permite să execut orice (bine … majoritatea) scripturilor bash pe PC-ul meu cu Windows. –  > Por Paul0515.
  • Puteți rula virtual toate scripturile bash – atâta timp cât nu încearcă să interacționeze cu sistemul de operare gazdă (Windows). WSL bash este un virtualizare ușoară subsistem care poate executa scripturi de original binare ELF (adică Ubuntu) – dar nu puteți scăpa de el! –  > Por ankostis.
Michael Shopsin

Puteți instala întotdeauna Cygwin pentru a rula un shell Unix sub Windows. Am folosit Cygwin pe scară largă cu Window XP.

Comentarii

  • Ce pachet trebuie să instalez pentru a rula UNIX Shell în Cygwin? –  > Por Turnul.
  • @rFactor pagina Cygwin include un program de instalare pentru Windows cu toate componentele necesare. –  > Por Spencer Rathbun.
  • Site-ul Cygwin explică ce a fost portat și cum se instalează. Dacă tot ce doriți este un shell, atunci instalarea de bază a Cygwin ar trebui să fie suficientă. –  > Por Michael Shopsin.
Simon Featherstone

După ce ați instalat git-extentions (http://gitextensions.github.io/), puteți rula fișierul .sh din promptul de comandă. (Nu este nevoie de ./script.sh, doar rulați-l ca pe un fișier bat/cmd)Sau le puteți rula într-un mediu bash „complet” utilizând shell-ul bash MinGW Git.

Nu sunt un mare fan al Cygwin (da, sunt sigur că este foarte puternic), așa că rularea scripturilor bash pe Windows fără a fi nevoie să îl instalez este perfectă pentru mine.

Comentarii

  • Nu știu ce este git-extensions, dar în descrierea sa scrie că este o interfață grafică de utilizator pentru git. Cum ați putea rula scripturi shell din acest instrument? Poate vă referiți să le rulați cu msys bash pe care îl include? –  > Por Variabila mizerabilă.
  • Doar pentru a confirma – git-extensions include o copie de bash și o stabilește în calea de acces. Am încercat bash de la o instanță powershell, nu a reușit, am instalat git-extensions și am încercat din nou și a funcționat pentru mine. –  > Por rtpHarry.
rubynorails

Pentru a rula nativ, probabil că va trebui să utilizați Cygwin (fără de care nu pot trăi atunci când folosesc Windows). Așa că, din start, +1 pentru Cygwin. Orice altceva ar fi necivilizat.

Cu toate acestea, acestea fiind spuse, am început de curând să folosesc o combinație de utilități pentru a PORTA cu ușurință scripturi Bash în Windows, astfel încât colegii mei anti-Linux să poată executa cu ușurință sarcini complexe care sunt mai bine gestionate de utilitățile GNU.

De obicei, pot să port un script Bash în Batch într-un timp foarte scurt, deschizând scriptul original într-un panou și scriind un fișier Batch în celălalt panou. Instrumentele pe care le folosesc sunt următoarele:

Prefer UnxUtils în locul lui GnuWin32 din cauza faptului că [vă rog să mă corectați dacă greșesc] utilitarele GnuWin trebuie în mod normal instalate, în timp ce UnxUtils sunt binare independente care funcționează imediat.

Cu toate acestea, CoreUtils nu include unele utilitare familiare *NIX, cum ar fi cURL, care este disponibil și pentru Windows (curl.haxx.se/download.html).

Eu creez un dosar pentru proiecte și întotdeauna SET PATH=. în fișierul .bat, astfel încât să nu se facă referire la alte comenzi decât la comenzile de bază ale shell-ului CMD (precum și la anumite UnxUtils necesare în dosarul proiectului pentru ca scriptul Batch să funcționeze conform așteptărilor).

Apoi, copiez fișierele .exe CoreUtils necesare în dosarul proiectului și fac referire la acestea în fișierul .bat, cum ar fi „.curl.exe -s google.com” etc.”.

Programul Bat2Exe este cel în care se întâmplă magia. Odată ce fișierul Batch este complet și a fost testat cu succes, lansați Bat2Exe.exe și specificați calea către dosarul proiectului. Bat2Exe va crea apoi un binar Windows care va conține toate fișierele din acel dosar specific și va folosi primul .bat pe care îl găsește pentru a-l utiliza ca executabil principal. Puteți include chiar și un fișier .ico pentru a-l folosi ca pictogramă pentru fișierul .exe final generat.

Am încercat câteva programe de acest tip, iar multe dintre fișierele binare generate sunt marcate ca fiind malware, însă versiunea Bat2Exe la care am făcut referire funcționează perfect, iar fișierele .exe generate sunt scanate în mod complet curat.

Executabilul rezultat poate fi rulat interactiv prin dublu clic sau poate fi rulat din linia de comandă cu parametri etc., la fel ca un fișier Batch obișnuit, cu excepția faptului că veți putea utiliza funcționalitatea multora dintre instrumentele pe care le veți folosi în mod normal în Bash.

Îmi dau seama că acest lucru devine destul de lung, dar dacă îmi permiteți să fac o mică digresiune, am scris, de asemenea, un script Batch pe care îl numesc PortaBashy, pe care colegii mei îl pot lansa de la o partajare de rețea care conține o instalare Cygwin portabilă. Acesta setează apoi variabila %PATH% în formatul normal *NIX (/usr/bin:/usr/sbin:/bin:/sbin) etc. și poate lansa fie shell-ul Bash propriu-zis, fie lansa emulatorul de terminal MinTTY, mai puternic și mai drăguț.

Există întotdeauna numeroase modalități de a realiza ceea ce încercați să faceți; este doar o chestiune de a combina instrumentele potrivite pentru această sarcină și, de multe ori, totul se reduce la preferințele personale.

viță de vie

Mai există o posibilitate teoretică de a face acest lucru: versiunile profesionale de Windows au suport POSIX încorporat, astfel încât bash ar fi putut fi compilat pentru Windows în mod nativ.

Păcat, dar nici eu nu am găsit încă unul compilat…

Comentarii

  • Sistemul POSIX sybsystem pe Windows a fost abandonat [1]. Fiind înlocuit cu „Subsistemul Windows pentru Linux”, care se bazează pe sistemul de virtualizare ușoară „Drawbridge” pentru a rula Ubuntu-bash nemodificat. Dar există unele nuanțe, de exemplu, odată intrat în acest sistem, nu mai poți apela executabile Windows! [1] blogs.msdn.microsoft.com/wsl/2016/04/22/… –  > Por ankostis.
  • @ankostis, De fapt, cu CU poți… –  > Por Paul0515.