2013-06-15 11:48:25 +0000 2013-06-15 11:48:25 +0000
55
55

Wie kann ich eine Bash-ähnliche Shell unter Windows verwenden?

Ich benutze Linux und einen Mac, und ich werde bald einige Kommandozeilensachen unterrichten.

Was kann ich unter Windows installieren, um ein Terminalfenster zu erhalten, das einer einfachen Mac/Linux-Bash-Shell am ähnlichsten ist?

Ich würde gerne auch .bash_aliases definieren können, wenn möglich.

Antworten (8)

48
48
48
2016-03-30 19:45:06 +0000

Sie können jetzt das Windows Subsystem für Linux installieren, mit dem Sie die native Linux-Shell und -Tools im Benutzermodus unter Windows ausführen können. Dies ermöglicht Ihnen, die Bash-Shell direkt unter Windows auszuführen und basiert auf Ubuntu.

Dies wurde in Windows 10 mit dem Anniversary Update (2016) eingeführt und ist standardmäßig nicht aktiviert. Um die neue Funktion auf einem Windows 10 Anniversary Update-Rechner zu aktivieren, gehen Sie wie folgt vor:

  1. Navigieren Sie zu Einstellungen -> Update & Sicherheit -> Für Entwickler und wählen Sie “Entwicklermodus”
  2. Systemsteuerung -> Programme und Funktionen und klicken Sie auf “Windows-Funktionen ein- oder ausschalten” im oberen linken Bereich
  3. Markieren Sie im Dialogfeld “Windows Subsystem für Linux” und klicken Sie auf “Ok”
  4. Starten Sie den Rechner neu
  5. Suchen Sie nach “bash” und klicken Sie darauf, es sollte sich eine Eingabeaufforderung öffnen und Sie fragen, ob Sie “Ubuntu on Windows” installieren möchten, fahren Sie mit “y” fort
  6. Nach der Installation werden Sie aufgefordert, einen UNIX-Benutzernamen und ein Passwort zu erstellen
  7. Sie sind nun bereit, die Bash-Shell zu verwenden

Ein wenig Geschichte: 2015 wurde das Projekt Astoria gestartet, um Android-Apps auf Windows zu bringen, und es wurde ein Linux-Subsystem namens Windows Subsystem for Linux (WSL) für diesen Zweck erstellt. Schließlich wurde das Projekt Astoria eingestellt, da es die UWP-Strategie (Universal Windows Platform) untergrub, aber einige Teile wurden beibehalten und bilden die Grundlage von Bash für Windows. Im Laufe der Zeit arbeitete Microsoft mit Canonical (den Machern von Ubuntu Linux) zusammen, um ihnen ein natives Image mit allen unterstützten Tools/Binaries zur Verfügung zu stellen.

Weitere Informationen finden Sie hier, https://blogs.msdn.microsoft.com/commandline/2016/04/06/bash-on-ubuntu-on-windows-download-now-3/ https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/ https://sec.ch9.ms/sessions/build/2016/P488.mp4 (Video)

42
42
42
2013-06-15 11:50:58 +0000

Sie könnten Cygwin oder MSYS/MinGW installieren, oder Sie könnten eine vollständige Linux-Distribution in einer virtuellen Maschine installieren (z. B. mit VirtualBox ).

21
21
21
2017-05-09 14:27:32 +0000

Hier ist eine Liste der Optionen, die ab 2018-05 verfügbar sind, mit einer Fülle von Aktualisierungen bezüglich WSL ab 2020-01, zusammen mit ein paar Details zu jeder Option.

Optionen, die hervorstechen

* Windows Subsystem for Linux(WSL) **

WSL wird immer ausgereifter (Microsoft hat die Beta-Warnung schon vor langer Zeit fallen gelassen) und ist sehr einfach zu installieren, so dass es in den meisten Fällen eine sehr gute (wenn nicht die beste) Option ist. Es löst das Problem mit einer anderen Methode als die meisten anderen Optionen. Sie führen genau denselben Binärcode aus, den Sie auch auf einem Linux-System ausführen würden. Bis 2020-01 fängt WSL Kernel-Aufrufe ab und übersetzt sie in Windows-Kernel-Aufrufe (denken Sie an das Gegenteil von Wine). Dies wird sich ändern, da die aktuelle Beta von WSL einen echten Linux-Kernel in einer leichtgewichtigen VM ausführt.

Wie auch immer, mit WSL erhalten Sie eine nette Shell mit fast allen CLI-Goodies, die Sie bei einer Ubuntu-Installation erwarten würden, und die Möglichkeit, apt install fast alles aus den Repositories zu nutzen. Microsoft gibt offiziell an, dass “WSL nicht darauf abzielt, GUI-Desktops oder -Anwendungen zu unterstützen” allerdings gibt es inoffizielle Anleitungen, wie man es machen kann. Es scheint, dass nach dem derzeitigen Stand der Dinge (2020-01) die Hauptnachteile von WSL die folgenden sind:

Hier ist ein alter, aber netter Vergleich mit cygwin (beachten Sie, dass Rich Turner ein Mitglied des WSL-Teams ist und eine Menge nützlicher Informationen über WSL gepostet hat)

Cygwin und Babun

Cygwin bietet folgendes:

  1. eine Bash-Shell und das Mintty-Terminal,
  2. eine umfangreiche Palette gängiger Linux-Dienstprogramme, die für die Ausführung unter Windows kompiliert wurden,
  3. eine umfassende Kompatibilitätsschicht, die die Ausführung von Linux-Programmen unter Windows ermöglicht.

Cygwin zielt darauf ab, die Portierung von Linux-Anwendungen auf Windows zu vereinfachen. Wenn ein C-Programm für Unix entwickelt wurde und die Verwendung von Funktionen wie Pipes, Datei- und Verzeichniszugriff im Unix-Stil usw. erwartet, dann können Sie es für Cygwin kompilieren und Cygwin wird als Kompatibilitätsschicht zwischen dem Code und dem fremden Betriebssystem (Windows) fungieren. So kann das gleiche C-Programm mit wenigen oder gar keinen Änderungen sowohl unter Linux als auch unter Windows funktionieren. Eine riesige Liste von Linux-Programmen ist auf diese Weise zusammengestellt worden und kann ausgeführt werden, wenn Sie Cygwin installieren. Allerdings müssen Sie, der Benutzer dieser Programme, wahrscheinlich mit Unix vertraut sein. Zum Beispiel müssen Sie möglicherweise Argumente wie /cygdrive/c/autoexec.bat statt c:\autoexec.bat übergeben und bereit sein, mit Ausgaben mit Unix-Zeilenterminierung (\n) statt Windows-Zeilenterminierung (\r\n) umzugehen.

Die Sammlung aller Cygwin-Programme bilden ein Repository, und obwohl Cygwin keinen traditionellen Linux-Paketmanager hat, können Sie jederzeit Programme aus diesem Repository hinzufügen, entfernen und aktualisieren, und zwar auf eine sehr kontraintuitive Weise (Sie führen Cygwins setup. exe jederzeit nach der Installation aus)

  • Babun ** ist Cygwin mit einem vollwertigen Paketmanager (pact), oh-my-zsh für seine Shell, git, automatischen Updates und einer Plugin-orientierten Architektur. Obwohl die Standard-Shell zsh ist, kann man leicht auf bash umschalten. Es scheint ein nettes Upgrade von vanilla Cygwin zu sein, wenn Sie sich nicht an dem zusätzlichen Gewicht stören.

Mingw-w64

Mingw-w64 bietet das Folgende:

  1. eine Bash-Shell,
  2. eine ganze Reihe von Linux-Utilities,
  3. eine SW-Entwicklungs-Toolchain, um Anwendungen zu erstellen, die ohne Linux-Kompatibilitätsschicht (oder mit einer minimalen) laufen.

MinGW ist in erster Linie eine Software-Distribution und eine Entwicklungsplattform für Windows. Insbesondere ist es eine Windows-Portierung der GNU-Compiler-Werkzeuge, wie GCC, make, bash und so weiter. Es enthält eine ganze Reihe von GNU-Werkzeugen und eine minimale Unix-Kompatibilitätsschicht.

Der Hauptunterschied zwischen Mingw-w64 und Cygwin liegt in den Prioritäten: Cygwin zielt darauf ab, eine komplette POSIX-Kompatibilitätsschicht bereitzustellen, die eine vollständige Implementierung aller wichtigen Unix-Systemaufrufe und -Bibliotheken umfasst; die Leistung ist der Kompatibilität untergeordnet. MinGW zielt auf Leistung ab, daher wird es bestimmte POSIX-APIs, die unter Windows nicht einfach und/oder schnell genug implementiert werden können, nicht bereitstellen. Außerdem ist die Hauptzielgruppe von MinGW die S/W-Entwickler. Nichtsdestotrotz werden auch Gelegenheitsanwender ihre Freude an der Shell und den mitgelieferten Dienstprogrammen für allgemeine Zwecke haben.

MSYS2 und Git für Windows

MSYS2 bietet Folgendes:

  1. eine Bash-Shell und das Mintty-Terminal,
  2. eine ganze Reihe von Linux-Utilities,
  3. einen vollwertigen Kommandozeilen-Paketmanager zum Installieren von OS-Programmen
  4. Teile sowohl von Cygwin als auch von MinGW, um das Erstellen von Anwendungen entweder mit oder ohne eine umfassende Linux-Kompatibilitätsschicht zu unterstützen.
  5. ein Software-Repository und einen Paketmanager (pacman), der es einfach macht, Software unter Windows zu installieren, zu verwenden, zu erstellen und zu portieren.

MSYS2 ist auch in erster Linie eine Software-Distribution und eine Bauplattform für Windows wie MinGW, aber es kombiniert sowohl den Weg von Cygwin als auch den Weg von MinGW. Sie können mit MSYS2 entweder “MinGW-Programme” oder “MSYS2-Programme” erstellen. Letzteres verweist auf die Kompatibilitätsschicht von MSYS2 (msys-2.dll), die ihrerseits eng an die Entwicklung der Kompatibilitätsschicht von Cygwin angelehnt ist, mit ein paar Ergänzungen/Änderungen . Die Repositories der 2 Projekte sind jedoch völlig unabhängig voneinander. Obwohl also sowohl MSYS2 als auch Cygwin grep.exe bereitstellen, kann es sein, dass sie eine völlig andere Version haben.

  • Git für Windows ** ist entweder nur MSYS2 mit installiertem Git oder zumindest stark auf MSYS2 basierend . Es bietet die gleiche Shell (bash), Terminal (Mintty) und Paketmanager (pacman). Es scheint der populärste Weg zu sein, das dominante Git unter Windows zum Laufen zu bringen und zusammen mit ihm erhalten Sie eine schöne Unix-Umgebung.

Gemeinsamkeiten

Abgesehen von WSL teilen die meisten der oben genannten Werkzeuge eine Menge gemeinsamer Technologie (Bibliotheken, ausführbare Dateien, Konzepte). Zum Beispiel hängt die Bash-Shell, die mit MinGW geliefert wird, von der msys-2.dll ab, die wiederum ein Fork der cygwin.dll ist. Also ja, es gibt viel Raum für Verwirrung :-)

Weitere Optionen

  • Cmder ** bietet nur ein nettes Terminal und eine bash-ähnliche Shell für Windows. Seine Hauptkomponente ist * Conemu ** (das Terminal). Darüber hinaus fügt es Clink hinzu, das Powerful Bash-style command line editing, ein eigenes Prompt-Layout und das Monokai-Farbschema bietet. Es ist hochgradig (oder vielleicht sogar vollständig) kompatibel mit nativen Windows-Konsolenprogrammen.

  • Scoop ** bietet einen Kommandozeilen-Paketmanager für viele bekannte plattformübergreifende Programme, einschließlich vieler GNU-Tools. Er lädt vorkompilierte Pakete herunter. Es stellt weder eine Shell noch ein Terminal zur Verfügung, sondern läuft unter Windows’ cmd.exe (mit all seinen Einschränkungen, aber auch mit seiner vollen Kompatibilität zu nativen Windows-Konsolenprogrammen). Es enthält auch keine Compiler-Suite (aber natürlich sind Compiler und Entwicklungswerkzeuge typische Pakete, die Sie mit Scoop installieren können). Viele der Programme, die Scoop installiert, stammen entweder direkt aus dem MinGW/MSYS-Projekt oder wurden mit deren Werkzeugen erstellt.

Noch mehr Optionen

Die unten aufgeführten Lösungen scheinen nicht aktiv zu sein und ich habe sie nie getestet, aber sie scheinen die Aufgabe für andere zu erfüllen:

  • Gow ** (Gnu On Windows) ist die leichtgewichtige Alternative zu Cygwin ohne Shell. Es verwendet ein bequemes Windows-Installationsprogramm, das etwa 130 extrem nützliche Open-Source-Linux-Anwendungen installiert, die als native Win32-Binärdateien kompiliert und über die cmd.exe von Windows verfügbar sind. Es ist so konzipiert, dass es so klein wie möglich ist (etwa 10 MB).

  • UnxUtils & GnuWin32 **: UnxUtils ist eine Sammlung von Portierungen gängiger GNU-Unix-ähnlicher Hilfsprogramme auf natives Win32, wobei die ausführbaren Dateien nur von der Microsoft C-Runtime msvcrt.dll abhängen. Sie müssen den Hauptteil und ein paar Updates herunterladen. GnuWin32 hat neuere Versionen als UnxUtils, benötigt aber unterstützende Dateien (z.B. DLLs)

MSYS & MinGW scheinen wurden von MSYS2 & MinGW-W64 veraltet zu sein, daher habe ich sie mir nie angesehen.

Einige allgemeine Probleme unter Cygwin & MSYS2

Bezüglich des Terminals

Mintty ist das Terminal, das in Cygwin, MSYS2 und deren Derivaten verwendet wird. Man sollte sich darüber im Klaren sein, dass es kein schmerzfreier Ersatz für die Windows-Eingabeaufforderung ist, wenn man windows-native Konsolenprogramme ausführt. Während Programme mit einfacher Textausgabe in der Regel gut funktionieren, gibt es bei interaktiven und Vollbildprogrammen oft Probleme. Lesen Sie mehr auf der Homepage von Mintty und lesen Sie auch den Eintrag “Some native console programs don’t work when run from Git Bash” auf Git for Windows FAQ . Dieser Eintrag enthält folgende Empfehlungen, wenn Sie mit dieser Art von Problemen konfrontiert werden:

Es gibt mehrere Methoden, um diese Probleme zu umgehen:

  • Führen Sie Programme, die Probleme haben, mit dem Dienstprogramm winpty aus. Dies erlaubt Ihnen, das schönere mintty-Terminal weiter zu verwenden, kann aber unhandlich werden, wenn Sie den Workaround für viele Programme benötigen.
  • [verwenden Sie cmd.exe] und konfigurieren Sie es für “Quick Edit”, vernünftige Größe und Zurückblättern und geeignete Unicode-Schriftart. Mit den anderen Macken von [cmd.exe] werden Sie trotzdem leben müssen.
  • Installieren und benutzen Sie Conemu .

Andere Probleme

Die zwei wichtigsten Dinge, die Sie beachten sollten, sind diese:

  1. Es gibt einen Kompromiss zwischen Leistung und schwer zu debuggenden Problemen. Je leistungsfähiger die Lösung ist, desto mehr Dinge können schief gehen, auch auf eine Art und Weise, die auf den ersten Blick nichts mit Ihrer Linux-Schicht zu tun hat.

  2. wenn Sie nicht viel Linux-Erfahrung haben, sollten Sie nicht die mächtigeren Lösungen wie Cygwin/MSYS2/MinGW verwenden

UnxUtils und GnuWin32 haben die geringste Leistung, aber auch das geringste Potential, Ihnen Kopfschmerzen zu bereiten. Cygwin und ähnliche Programme liegen sowohl bei der Leistung als auch bei den Kopfschmerzen an der Spitze. Cmder liegt irgendwo in der Mitte. Also wenn Sie die leistungsstärksten Lösungen benötigen, schlafen Sie gut und seien Sie voll konzentriert. Vermeiden Sie die Verwendung leistungsstarker Lösungen, während Sie etwas Neues und möglicherweise Instabiles testen. Vergessen Sie auch nicht, dass Lösungen mittlerer Komplexität wie cmder nicht makellos sind.

Das Problem, dass Linux-Befehle die Windows-Befehle überschatten, ist eine häufige Ursache für schwer zu debuggende Probleme in Lösungen wie Cygwin/MSYS2/MinGW. Hier ist ein Beispiel: Ich hatte eine .bat-Datei, die den Befehl timeout verwendete. Wenn sie unter Cygwin ausgeführt wurde, schlug sie fehl, weil timeout auch ein Linux-Befehl ist, aber mit einer anderen Syntax. Nachdem ich das Problem entdeckt hatte, fand ich heraus, dass ich ein PATH=… am Anfang der .bat-Datei hinzufügen konnte, um sicherzustellen, dass der Windows-Befehl Priorität hatte. Aber dann bekam ich einen noch kryptischeren “Input redirection is not supported” Fehler und begnügte mich mit einem Workaround, bevor ich den Grund fand.

Hier ist ein Beispiel für ein Problem mit cmder. Ich habe die Windows-Version von unison unter Cmder laufen lassen und unter einigen speziellen Bedingungen blieb es mit absolut keiner Fehlermeldung hängen. Derselbe Befehl lief unter cmd.exe immer einwandfrei. Das Lustige ist, dass es auch unter Cygwin perfekt lief (tatsächlich ist bei Unicode-Dateinamen ein Cygwin-Terminal besser als cmd.exe, weil cmd.exe Unicode-Text oft fehlerhaft anzeigt).

Über diese Anleitung

Im Laufe des Jahres 2017-05 hatte ich es satt, die Unterschiede der oben genannten Tools nicht zu verstehen, obwohl ich einige von ihnen schon seit langem benutzte (hauptsächlich CygWin und cmder, aber nie für Entwicklungszwecke). Also habe ich ein paar Stunden damit verbracht, die Landschaft zu durchforsten. Diese Anleitung ist das Ergebnis der Notizen, die ich gemacht habe. Ich bin kein Experte auf diesem Gebiet, aber ich habe mich bemüht, alle relevanten Informationen zu finden, sie mit einem kritischen Auge zu lesen und die wichtigsten Teile übersichtlich darzustellen. Bitte kommentieren Sie, wenn Ihnen etwas falsch erscheint, und ich werde mein Bestes tun, um es zu korrigieren.

Abschließend noch eine Entschuldigung für einige terminologische Probleme: In diesem Text verwende ich manchmal den Begriff Linux anstelle von UNIX oder POSIX. Ich weiß, dass sie nicht dasselbe sind, aber es ist sehr schwierig, zwischen ihnen zu unterscheiden, wenn man sich einem Thema aus so großer Entfernung nähert. Selbst wenn es nicht schwierig ist, braucht es Zeit, die ich nicht habe ;-)

10
10
10
2013-10-30 12:46:07 +0000

Ich würde vorschlagen, dass Sie einen minimalen Satz von MinGW und auch einen minimalen Satz von MSYS herunterladen und installieren. Das MinGW-Installationsprogramm gibt Ihnen eine einfache GUI, um auszuwählen, welche Pakete Sie installieren möchten. Wenn Sie nur BASH wollen, dann wird die Installation nicht mehr als ein paar Megabytes benötigen.

UPDATE: Ich bin zum MSYS2 gewechselt, das weitaus fortschrittlicher ist und eine Portierung des ArchLinux-Werkzeugs pacman zur Paketverwaltung hat. Das MSYS2-Installationsprogramm hat alles, was Sie brauchen, und es verwendet mintty , was absolut perfekt ist.

10
10
10
2013-11-20 01:00:47 +0000

Es ist auch Clink verfügbar auf GitHub . Es integriert sich mit Hilfe von Hook-Bibliotheken in die Windows-Eingabeaufforderung.

Aus der Projektbeschreibung:

Clink kombiniert die native Windows-Shell cmd.exe mit den leistungsstarken Befehlszeilen-Editierfunktionen der GNU Readline-Bibliothek, die umfangreiche Vervollständigungs-, Verlaufs- und Zeilenbearbeitungsfunktionen bietet.

(es bietet also keine Bash-als-Programmiersprache-Funktionen oder andere Unix-Goodies)

Ich benutze Linux bei der Arbeit und ertappe mich manchmal dabei, dass ich in cmd mit Tabs herumfahre, die sich nicht so verhalten, wie ich es von Bash erwarte. Mit Clink kann ich einige dieser Unzulänglichkeiten überwinden.

Kürzlich habe ich auch ein vielversprechendes, aber noch nicht “Alleskönner”-Projekt namens flinux entdeckt, das Linux-Systemfunktionen emuliert und eine Art System darauf aufbaut (derzeit auf Arch Linux basierend)

7
7
7
2013-06-15 17:07:20 +0000

Zusätzlich zu what faffaffaff said enthält Git for Windows die Bash und einige gängige Linux-Kommandozeilenprogramme (z. B. Vim , sed und gawk ). Es basiert auf MSYS . Die Version der Programme ist allerdings alt, z.B. ist Bash Version 3.1. Cygwin hätte aktuellere Versionen der Hilfsprogramme.

Ich benutze auch ConEmu als Terminal-Emulator (hauptsächlich für Syntax-Highlighting in Vim, Tab-Seiten und einfacheres Kopieren/Einfügen). console2 ist auch ein anderer beliebter Terminal-Emulator, obwohl ich ihn nicht ausprobiert habe.

2
2
2
2015-06-16 22:50:19 +0000

Dies ist eines der ersten Dinge, die ich mache, wenn ich einen neuen Windows-Rechner einrichte: Eine funktionale und schlanke Konsole in Windows

1
1
1
2015-06-19 15:44:31 +0000

Ich habe es gerade mit Babun versucht, das Cygwin intern integriert hat, und es schmeckt mir gut : )

Die Download-Datei ist etwas groß, etwa 250 MB. Aber die Installation ist unkompliziert; es muss nichts konfiguriert werden und es funktioniert einfach!