Gibt es eine Möglichkeit, Bash-Skripte unter Windows auszuführen? [geschlossen]

100

Ich habe Windows 7 Ultimate gekauft und verwende es. Ich verwende es gerne, um Anwendungen zu entwickeln. Einer der Nachteile (wie bei jedem Betriebssystem) ist, dass ich keine Bash-Skripte ausführen kann. Gibt es eine Möglichkeit, Bash-Skripte unter Windows auszuführen, indem Sie Software installieren? Es ist in Ordnung, wenn es nicht zu 100% funktioniert, aber solange die gängigste Funktionalität verfügbar ist, sollte es großartig sein.

Turm
quelle
3
@ Rajish Nicht mehr…
Msanford
1
@msanford, das macht keinen Sinn. Warum darf dieser Thread leben, während sein Duplikat geschlossen wird?
Pacerier
@Pacerier Das Duplikat wurde gelöscht, mit ziemlicher Sicherheit vom Autor, da Mods dazu neigen, Fragen nicht zu löschen. Darauf bezog sich mein Kommentar wahrscheinlich. Ich weiß nicht, warum der Autor es gelöscht hat. Auch war es vor 4 Jahren.
Msanford

Antworten:

80

Installieren Sie Cygwin , zu dem Bash neben vielen anderen GNU- und Unix-Dienstprogrammen gehört (ohne die es unwahrscheinlich ist, dass Bash sowieso sehr nützlich ist).

Eine weitere Option ist MinGWs MSYS, das Bash und einen kleineren Satz wichtigerer Dienstprogramme wie awk enthält. Persönlich hätte ich Cygwin vorgezogen, weil es so schwere Hebewerkzeuge wie Perl und Python enthält, ohne die ich nicht leben kann, während MSYS diese überfliegt und davon ausgeht, dass Sie sie selbst installieren werden.

Aktualisiert : Wenn jemand an dieser Antwort interessiert ist und MS-Windows 10 ausführt, beachten Sie bitte, dass MS-Windows 10 über eine Funktion " Windows-Subsystem für Linux " verfügt, mit der Sie nach der Aktivierung ein Image von Ubuntu und im Benutzermodus installieren können Führen Sie dann Bash darauf aus. Dies bietet 100% Kompatibilität mit Ubuntu zum Debuggen und Ausführen von Bash-Skripten. Dieses Setup ist jedoch vollständig eigenständig von Windows und Sie können Bash-Skripte nicht für die Interaktion mit Windows-Funktionen (wie Prozessen und APIs) verwenden, außer für den eingeschränkten Zugriff auf Dateien über die DrvFS- Funktion .

Guss
quelle
2
Siehe Windows - Subsystem für Linux (WSL) Dokumentation für weitere Informationen.
Stomy
1
WSL wurde für Windows 10 S jetzt veraltet ... :(
Javier García Manzano
2
Nicht veraltet, es ist nur eine der Funktionen, die Sie nicht erhalten, wenn Sie die billigere Windows " S mall Edition" kaufen . Es ist auch nicht in der Home Edition IIRC verfügbar.
Guss
Mit Git können Sie Batch-Dateien einfach von überall in Windows
ausführen.
@MuhammadFaizanKhan - Der Git-Port für Windows sowie einige andere "befehlszeilenorientierte" Anwendungen (Github Desktop als bemerkenswertes Beispiel) verfügen ebenfalls über einen Windows-Port von Bash. Dies sind meistens MinGW-Ports (dh mit MinGW und MSYS kompiliert, um die Posix-Kompatibilität zu gewährleisten). Wenn Sie sich Ihre Git für Windows-Installation ansehen, sehen Sie insbesondere das mingw32Verzeichnis, das im Wesentlichen MSYS enthält. Git für Windows ist also MinGW, das Git (optional im MSYS-Installationsprogramm) mit einem "schöneren" Installationsprogramm enthält: superuser.com/a/1362301/10942
Guss
29

Die beste Option, die ich finden konnte, ist Git Windows. Installieren Sie es einfach und klicken Sie mit der rechten Maustaste auf "Git Bash Here". Dadurch wird ein Bash-Fenster geöffnetGeben Sie hier die Bildbeschreibung ein

Dies öffnet ein Bash-Fenster wie folgt: Geben Sie hier die Bildbeschreibung ein

und die Linux-Befehle funktionieren ...

Ich habe die Befehle 'sh', 'vi', 'ssh', 'curl' usw. ausprobiert

Garvit Jain
quelle
DAS - es ist so einfach, nein?
Kalpesh Soni
yup wirklich praktisch
Garvit Jain
4
Sie können MinGW auch einfach ohne das zusätzliche Aufblähen von Git installieren, wenn Sie nur die Shell wünschen.
Stefan Z Camilleri
Sie können dieses einminütige Tutorial hier ansehen. Youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan
25

Wenn Sie etwas Nativeres suchen, können Sie mit getGnuWin32 alle portierten Unix-Befehlszeilentools installieren. Das plus winBash bietet Ihnen den größten Teil einer funktionierenden Unix-Umgebung. Wenn Sie console2 für einen besseren Terminalemulator hinzufügen, können Sie dies unter Windows kaum sagen!

Cygwin ist insgesamt ein besseres Toolkit, aber ich habe aufgrund der Kluft zwischen ihm und Windows auf Überraschungsprobleme gestoßen. Keine dieser Lösungen ist jedoch so gut wie ein natives Linux-System.

Möglicherweise möchten Sie die Verwendung von virtualbox zum Erstellen einer Linux-VM mit der Distribution Ihrer Wahl prüfen . Richten Sie es so ein, dass ein Ordner für das Host-Betriebssystem freigegeben wird. Sie können eine echte Linux-Entwicklungsumgebung verwenden und für Windows freigeben. Achten Sie einfach auf diese EOL-Marker, sie bekommen Sie jedes Mal.

Spencer Rathbun
quelle
Oder CoLinux: colinux.org
Guss
colinux funktioniert (noch) nicht mit 64-Bit
Hexicle
Kennt jemand einen Nachfolger des Win-Bash-Projekts? Es ist nicht mehr aktiv entwickelt und steckt in Bash v 1.14 (Bash ist ab diesem Beitrag v 4.4)
Bjartr
@Bjartr Die Microsoft-Leute haben eine Funktion hinzugefügt, mit der eine native Version von Bash unter Windows 7 ausgeführt werden kann
Spencer Rathbun
@SpencerRathbun Das läuft nur unter Windows 10, ich bin zufällig unter Windows 7. Ich bin mir auch nicht sicher, wie es mit dem Mischen von ausführbaren Dateien und Pfaden von Linux und Windows funktioniert, daher ist es (aus meiner Sicht) möglicherweise nicht besser als Cygwin Bash .
Bjartr
11

Beste Option? Windows 10. Native Bash-Unterstützung!

Paul0515
quelle
2
Nein, nicht die besten Optionen. Sie führen Linux nur auf diese Weise aus, nicht Bash IN Windows - Sie können keine ausführbaren Windows-Dateien von dieser Bash aus starten (es sei denn, Sie umgehen es mit cbwin... aber das ist bereits zu viel Aufwand für nur eine Problemumgehung).
Ankostis
Die Option "Beste" ist wahrscheinlich Geschmackssache. Vielleicht hast du recht. Es ermöglicht mir jedoch, alle (gut .. die meisten) Bash-Skripte auf meinem Windows-PC auszuführen.
Paul0515
1
Sie können alle Bash-Skripte virtuell ausführen, sofern sie nicht versuchen, mit dem Host-Betriebssystem (Windows) zu interagieren. WSL Bash ist ein leichtes Virtualisierungssubsystem , das die ursprünglichen ELF-Binärdateien (dh Ubuntu) ausführen kann - aber Sie können sich dem nicht entziehen!
Ankostis
10

Sie können Cygwin jederzeit installieren , um eine Unix-Shell unter Windows auszuführen. Ich habe Cygwin ausgiebig mit Windows XP verwendet.

Michael Shopsin
quelle
Welches Paket muss ich installieren, um die UNIX-Shell in Cygwin auszuführen?
Turm
@rFactor Die Cygwin-Seite enthält ein Windows-Installationsprogramm mit allen erforderlichen Komponenten.
Spencer Rathbun
Auf der Cygwin-Site wird erklärt, was portiert wurde und wie es installiert wird. Wenn Sie nur eine Shell benötigen, sollte die grundlegende Cygwin-Installation ausreichen.
Michael Shopsin
9

Nach der Installation von Git-Extentions ( https://code.google.com/p/gitextensions/ ) können Sie die .sh-Datei über die Eingabeaufforderung ausführen. (Keine ./script.sh erforderlich, führen Sie es einfach wie eine bat / cmd-Datei aus.) Oder Sie können sie in einer "vollständigen" Bash-Umgebung ausführen, indem Sie die MinGW Git-Bash-Shell verwenden.

Ich bin kein großer Fan von Cygwin (ja, ich bin sicher, es ist wirklich mächtig), also führe Bash-Skripte unter Windows aus, ohne es perfekt für mich installieren zu müssen.

Simon Featherstone
quelle
1
Ich weiß nicht, was Git-Erweiterungen sind, aber die Beschreibung besagt, dass es sich um eine grafische Benutzeroberfläche für Git handelt. Wie würden Sie Shell-Skripte mit diesem Tool ausführen? Vielleicht wollen Sie sie mit der darin enthaltenen msys bash ausführen?
Elende Variable
Nur zur Bestätigung - Git-Erweiterungen enthalten eine Kopie von Bash und setzen sie in den Pfad. Ich habe es bashvon einer Powershell-Instanz aus versucht, bin fehlgeschlagen, habe Git-Erweiterungen installiert und erneut versucht, und es hat bei mir funktioniert.
RTPHarry
4

Um nativ ausgeführt zu werden, müssen Sie wahrscheinlich Cygwin verwenden (ohne das ich unter Windows nicht leben kann). Also sofort +1 für Cygwin. Alles andere wäre unzivilisiert.

Allerdings habe ich kürzlich damit begonnen, eine Kombination von Dienstprogrammen zu verwenden, um Bash-Skripte einfach unter Windows zu portieren, damit meine Anti-Linux-Mitarbeiter problemlos komplexe Aufgaben ausführen können, die von GNU-Dienstprogrammen besser erledigt werden.

Normalerweise kann ich ein Bash-Skript in sehr kurzer Zeit nach Batch portieren, indem ich das ursprüngliche Skript in einem Bereich öffne und eine Batch-Datei in den anderen Bereich schreibe. Die Werkzeuge, die ich benutze, sind wie folgt:

Ich bevorzuge UnxUtils gegenüber GnuWin32, da [jemand korrigiert mich bitte, wenn ich falsch liege] GnuWin-Utils normalerweise installiert werden müssen, während UnxUtils eigenständige Binärdateien sind, die sofort funktionieren.

Die CoreUtils enthalten jedoch keine bekannten * NIX-Dienstprogramme wie cURL, das auch für Windows verfügbar ist (curl.haxx.se/download.html).

Ich erstelle einen Ordner für die Projekte und setze immer PAT PATH =. in der .bat-Datei, sodass auf keine anderen Befehle als die grundlegenden CMD-Shell-Befehle verwiesen wird (sowie auf die bestimmten UnxUtils, die im Projektordner erforderlich sind, damit das Batch-Skript wie erwartet funktioniert).

Dann kopiere ich die benötigten CoreUtils .exe-Dateien in den Projektordner und verweise auf sie in der .bat-Datei wie ". \ Curl.exe -s google.com" usw.

Im Bat2Exe-Programm geschieht die Magie. Sobald Ihre Batch-Datei vollständig ist und erfolgreich getestet wurde, starten Sie Bat2Exe.exe und geben Sie den Pfad zum Projektordner an. Bat2Exe erstellt dann eine Windows-Binärdatei, die alle Dateien in diesem bestimmten Ordner enthält, und verwendet die erste .bat-Datei, die als ausführbare Hauptdatei verwendet wird. Sie können sogar eine .ico-Datei einfügen, die als Symbol für die endgültige .exe-Datei verwendet wird, die generiert wird.

Ich habe einige dieser Programme ausprobiert und viele der generierten Binärdateien werden als Malware gekennzeichnet, aber die Bat2Exe-Version, auf die ich verwiesen habe, funktioniert einwandfrei und die generierten EXE-Dateien werden vollständig sauber gescannt.

Die resultierende ausführbare Datei kann interaktiv durch Doppelklicken ausgeführt oder über die Befehlszeile mit Parametern usw. wie eine normale Batch-Datei ausgeführt werden, außer dass Sie die Funktionalität vieler der normalerweise verwendeten Tools nutzen können in Bash.

Mir ist klar, dass dies ziemlich lange dauert, aber wenn ich etwas abschweifen darf, habe ich auch ein Batch-Skript geschrieben, das ich PortaBashy nenne und das meine Mitarbeiter von einer Netzwerkfreigabe aus starten können, die eine tragbare Cygwin-Installation enthält. Anschließend wird die Variable% PATH% auf das normale * NIX-Format (/ usr / bin: / usr / sbin: / bin: / sbin) usw. gesetzt und kann entweder in die Bash-Shell selbst oder in das leistungsstärkere und gestartet werden hübscher MinTTY Terminal Emulator.

Es gibt immer zahlreiche Möglichkeiten, um das zu erreichen, was Sie sich vorgenommen haben. Es geht nur darum, die richtigen Werkzeuge für den Job zu kombinieren, und oft läuft es auf persönliche Vorlieben hinaus.

Rubynorails
quelle
1

Es gibt noch eine theoretische Möglichkeit, dies zu tun: Professionelle Windows-Versionen verfügen über eine integrierte POSIX-Unterstützung, sodass bash möglicherweise nativ für Windows kompiliert wurde.

Schade, aber ich habe selbst noch keine zusammengestellt ...

Reben
quelle
3
Das POSIX-Sybsystem unter Windows wurde aufgegeben [1]. Wird durch das "Windows-Subsystem für Linux" ersetzt, das auf dem leichten Virtualisierungssystem "Drawbridge" basiert, um unverändertes Ubuntu-Bash auszuführen. Es gibt jedoch einige Nuancen, z. B. können Sie in diesem System keine ausführbaren Windows-Dateien mehr aufrufen! [1] blogs.msdn.microsoft.com/wsl/2016/04/22/…
ankostis
@ankostis, Eigentlich können Sie mit CU ...
Paul0515