C'è un modo per eseguire gli script Bash su Windows? [chiuso]


100

Ho acquistato e utilizzo Windows 7 Ultimate e mi piace utilizzarlo per sviluppare applicazioni. Uno dei lati negativi (come con tutti i sistemi operativi) è che non posso eseguire gli script Bash. C'è un modo per eseguire gli script Bash su Windows installando del software? Va bene se non funziona al 100%, ma finché è disponibile la funzionalità più comune dovrebbe essere eccezionale.


3
@Rajish Non più ...
msanford


1
@msanford, questo non ha senso. Perché questo thread è autorizzato a vivere mentre il suo duplicato viene chiuso?
Pacerier

@Pacerier Il duplicato è stato cancellato, quasi certamente dal suo autore poiché i mod tendono a non eliminare le domande. Probabilmente è quello a cui si riferiva il mio commento. Non so perché l'autore l'abbia cancellato. Inoltre è stato 4 anni fa.
msanford

Risposte:


80

Installa Cygwin , che include Bash tra molte altre utilità GNU e Unix (senza la quale è improbabile che bash sia comunque molto utile).

Un'altra opzione è MSYS di MinGW che include bash e un set più piccolo di utilità più importanti come awk. Personalmente avrei preferito Cygwin perché include strumenti di sollevamento pesanti come Perl e Python di cui trovo di non poter fare a meno, mentre MSYS li trascura e presume che li installerai da solo.

Aggiornato : se qualcuno è interessato a questa risposta e sta eseguendo MS-Windows 10, si prega di notare che MS-Windows 10 ha una funzione " Sottosistema Windows per Linux " che, una volta abilitata, consente di installare un'immagine in modalità utente di Ubuntu e quindi esegui Bash su quello. Ciò fornisce la compatibilità al 100% con Ubuntu per il debug e l'esecuzione di script Bash, ma questa configurazione è completamente autonoma da Windows e non è possibile utilizzare gli script Bash per interagire con le funzionalità di Windows (come processi e API) tranne per l'accesso limitato ai file tramite la funzione DrvFS .


2
Per ulteriori informazioni, vedere la documentazione del sottosistema Windows per Linux (WSL) .
stomy

1
WSL è stato deprecato per Windows 10 S ora ... :(
Javier García Manzano

2
Non deprecato, è solo una delle funzionalità che non si ottengono se si acquista la più economica " edizione S mall " di Windows . Inoltre, non è disponibile nella Home Edition, IIRC.
Guss

Git ti consente di eseguire facilmente file batch da qualsiasi punto delle finestre youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan

@MuhammadFaizanKhan - Il port di Git per Windows, così come alcune altre applicazioni "orientate alla riga di comando" (Github Desktop come esempio degno di nota) sono dotati anche di un port di Windows di Bash. Questi, il più delle volte no, sono porte MinGW (cioè compilate usando MinGW e MSYS per la compatibilità con Posix). In particolare, se guardi la tua installazione di Git per Windows, mingw32vedresti la directory che contiene fondamentalmente MSYS. Quindi Git per Windows è MinGW che include Git (il suo opzionale nell'installer MSYS) con un programma di installazione "più carino": superuser.com/a/1362301/10942
Guss

30

La migliore opzione che ho trovato è Git Windows Basta installarlo e quindi fare clic con il pulsante destro del mouse e fare clic su "Git Bash Here" si aprirà una finestra bashinserisci qui la descrizione dell'immagine

Questo aprirà una finestra bash come questa: inserisci qui la descrizione dell'immagine

ei comandi linux funzionano ...

Ho provato i comandi "sh", "vi", "ssh", "curl", ecc ...


QUESTO - è così semplice no?
Kalpesh Soni,


4
Puoi anche installare MinGW senza il peso extra di Git se tutto ciò che vuoi è la sua shell.
Stefan Z Camilleri

Puoi guardare questo tutorial di un minuto qui youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan

25

Se stai cercando qualcosa di un po 'più nativo, puoi usare getGnuWin32 per installare tutti gli strumenti a riga di comando di unix che sono stati portati. Questo più winBash ti offre la maggior parte di un ambiente unix funzionante. Aggiungi console2 per un emulatore di terminale migliore e quasi non puoi dirlo a Windows!

Cygwin è un toolkit migliore in generale, ma mi sono ritrovato a incontrare problemi a sorpresa a causa del divario tra esso e Windows. Nessuna di queste soluzioni è buona quanto un sistema linux nativo.

Potresti voler esaminare l'utilizzo di virtualbox per creare una VM Linux con la tua distribuzione preferita. Impostalo per condividere una cartella con il sistema operativo host e puoi utilizzare un vero ambiente di sviluppo Linux e condividere con Windows. Fai solo attenzione a quei marcatori EOL, ti prendono ogni volta.


Oppure CoLinux
Guss

colinux non funziona (ancora) su 64 bit
hexicle

Qualcuno sa di un successore del progetto win-bash? Non è più sviluppato attivamente e bloccato su bash v 1.14 (bash corretto, a partire da questo post, è v 4.4)
Bjartr

@Bjartr La gente di Microsoft ha aggiunto una funzionalità per consentire a una versione nativa di bash di funzionare su Windows 7
Spencer Rathbun

@SpencerRathbun Funzionerà solo su Windows 10, mi capita di essere su Windows 7. Inoltre, non sono sicuro di come funzioni mescolando file eseguibili e percorsi Linux e Windows, quindi potrebbe non essere migliore (dal mio punto di vista) di cygwin bash .
Bjartr

11

La migliore opzione? Windows 10. Supporto nativo di Bash!


2
No, non le migliori opzioni. Devi solo eseguire Linux in questo modo, non bash IN Windows - non puoi avviare gli eseguibili di Windows da quel bash (a meno che non lo risolva con cbwin... ma è già troppo complicato per solo una soluzione alternativa).
ankostis

L'opzione "migliore" è probabilmente una questione di gusti. Quindi forse hai ragione. Tuttavia, mi consente di eseguire qualsiasi (beh ... la maggior parte) script bash sul mio PC Windows.
Paul0515

1
Puoi eseguire tutti gli script bash virtuali, a condizione che non provino a interagire con il sistema operativo host (Windows). WSL bash è un sottosistema di virtualizzazione leggero che può eseguire i binari ELF originali (cioè Ubuntu), ma non puoi sfuggirgli!
ankostis

10

Puoi sempre installare Cygwin per eseguire una shell Unix sotto Windows. Ho usato Cygwin ampiamente con Windows XP.


Quale pacchetto devo installare per eseguire UNIX Shell in Cygwin?
Torre

@rFactor la pagina Cygwin include un programma di installazione di Windows con tutti i componenti necessari.
Spencer Rathbun

Il sito Cygwin spiega cosa è stato portato e come installarlo. Se tutto ciò che desideri è una shell, l'installazione di base di Cygwin dovrebbe essere sufficiente.
Michael Shopsin

9

Dopo aver installato git-extentions ( https://code.google.com/p/gitextensions/ ) puoi eseguire il file .sh dal prompt dei comandi. (Non è richiesto ./script.sh, eseguilo come un file bat / cmd) Oppure puoi eseguirli in un ambiente bash "completo" utilizzando la shell bash MinGW Git.

Non sono un grande fan di Cygwin (sì, sono sicuro che sia davvero potente), quindi eseguire script bash su Windows senza doverlo installare è perfetto per me.


1
Non so cosa sia git-extensions ma la sua descrizione dice che è un'interfaccia utente grafica per git. Come eseguiresti gli script della shell da questo strumento? Forse intendi eseguirli con msys bash che include?
Miserabile variabile

Solo per confermare - git-extensions include una copia di bash e la imposta nel percorso. Ho provato bashda un'istanza di PowerShell, non è riuscito, ho installato estensioni git e ho riprovato e ha funzionato per me.
rtpHarry

4

Per funzionare in modo nativo, probabilmente dovrai usare Cygwin (di cui non posso vivere senza quando uso Windows). Quindi subito, +1 per Cygwin. Qualsiasi altra cosa sarebbe incivile.

TUTTAVIA, detto questo, ho recentemente iniziato a usare una combinazione di utilità per PORTARE facilmente gli script Bash su Windows in modo che i miei colleghi anti-Linux possano eseguire facilmente attività complesse che sono gestite meglio dalle utilità GNU.

Di solito posso portare uno script Bash su Batch in brevissimo tempo aprendo lo script originale in un riquadro e scrivendo un file Batch nell'altro riquadro. Gli strumenti che utilizzo sono i seguenti:

Preferisco UnxUtils a GnuWin32 per il fatto che [qualcuno per favore mi corregga se sbaglio] normalmente devono essere installate le utilità di GnuWin, mentre UnxUtils sono binari indipendenti che funzionano appena fuori dalla scatola.

Tuttavia, i CoreUtils non includono alcune utilità * NIX familiari come cURL, disponibile anche per Windows (curl.haxx.se/download.html).

Creo una cartella per i progetti e sempre SET PATH =. nel file .bat in modo che non venga fatto riferimento ad altri comandi diversi dai comandi di shell CMD di base (così come i particolari UnxUtils richiesti nella cartella del progetto affinché lo script Batch funzioni come previsto).

Quindi copio i file CoreUtils .exe necessari nella cartella del progetto e li faccio riferimento nel file .bat come ". \ Curl.exe -s google.com", ecc.

Il programma Bat2Exe è dove avviene la magia. Una volta che il file Batch è completo ed è stato testato correttamente, avvia Bat2Exe.exe e specifica il percorso della cartella del progetto. Bat2Exe creerà quindi un file binario di Windows contenente tutti i file in quella specifica cartella e utilizzerà il primo .bat che incontra per utilizzare come eseguibile principale. Puoi anche includere un file .ico da utilizzare come icona per il file .exe finale che viene generato.

Ho provato alcuni di questi tipi di programmi e molti dei file binari generati vengono contrassegnati come malware, ma la versione Bat2Exe a cui ho fatto riferimento funziona perfettamente ei file .exe generati vengono scansionati completamente puliti.

L'eseguibile risultante può essere eseguito in modo interattivo facendo doppio clic o eseguito dalla riga di comando con parametri, ecc., Proprio come un normale file Batch, tranne per il fatto che sarai in grado di utilizzare le funzionalità di molti degli strumenti che utilizzerai normalmente in Bash.

Mi rendo conto che sta diventando piuttosto lungo, ma se posso divagare un po ', ho anche scritto uno script Batch che chiamo PortaBashy che i miei colleghi possono avviare da una condivisione di rete che contiene un'installazione Cygwin portatile. Quindi imposta la variabile% PATH% sul normale formato * NIX (/ usr / bin: / usr / sbin: / bin: / sbin), ecc. E può essere avviato nella shell Bash stessa o avviare il più potente e grazioso emulatore di terminale MinTTY.

Ci sono sempre molti modi per realizzare ciò che stai cercando di fare; è solo questione di combinare gli strumenti giusti per il lavoro e molte volte si riduce alle preferenze personali.


1

C'è un'altra possibilità teorica per farlo: le versioni professionali di Windows hanno il supporto POSIX integrato, quindi bash avrebbe potuto essere compilato per Windows in modo nativo.

Peccato, ma non ne ho ancora trovato uno compilato ...


3
Il sistema POSIX su Windows è stato abbandonato [1]. Viene sostituito dal "Sottosistema Windows per Linux" che si basa sul sistema di virtualizzazione leggero "Drawbridge" per eseguire Ubuntu-bash non modificato. Ma ci sono alcune sfumature, ad esempio una volta all'interno di questo sistema, non è più possibile chiamare gli eseguibili di Windows! [1] blogs.msdn.microsoft.com/wsl/2016/04/22/…
ankostis

@ankostis, In realtà, con CU puoi ...
Paul0515
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.