Ich benutze Linux und einen Mac und werde demnächst einige Kommandozeilen-Sachen unterrichten.
Was kann ich unter Windows installieren, um ein Terminalfenster zu erhalten, das einer einfachen Mac / Linux Bash-Shell am ähnlichsten ist?
Ich möchte, wenn möglich, auch .bash_aliases definieren können.
putty
eine Verbindung zu einem echten Linux-Server hergestellt. Unter Windows war ich immer sowohl zurückhaltend als auch in der Versuchung, es zu verwendencygwin
. Aber ich persönlich fand es praktischer als msys und schneller als ein vm. Nach der Installation stellt sich heraus, dass Cygwin irgendwie portabel ist. Es reicht aus, nur das Verzeichnis zu kopieren. Es wird jedoch ein neuer Benutzername auf jedem Computer / Benutzer basierend auf dem Windows-Benutzernamen erstellt (zumindest standardmäßig). Beachten Sie jedoch, dass einige [optionale] Befehlsschalter fehlen können, da cygwin / msys als benutzerdefinierte "Distribution" angesehen werden kann. teste sie.Antworten:
Sie können Cygwin oder MSYS / MinGW installieren oder eine vollständige Linux-Distribution in einer virtuellen Maschine installieren (z. B. mit VirtualBox ).
quelle
Sie können jetzt das Windows-Subsystem für Linux installieren, mit dem Sie Linux-Shell und -Tools im nativen Benutzermodus unter Windows ausführen können . Auf diese Weise können Sie die Bash- Shell direkt unter Windows ausführen und sie basiert auf Ubuntu.
Dies wurde in Windows 10 mit dem Anniversary Update (2016) eingeführt und ist standardmäßig nicht aktiviert. Gehen Sie folgendermaßen vor, um die neue Funktion auf einem Windows 10 Anniversary Update-Computer zu aktivieren:
Ein bisschen Geschichte, im Jahr 2015 wurde mit dem Projekt Astoria begonnen, Android-Apps auf Windows zu bringen. Zu diesem Zweck wurde ein Linux-Subsystem namens Windows-Subsystem für Linux (WSL) erstellt. Schließlich wurde das Projekt Astoria eingestellt, da es ihre UWP-Strategie (Universal Windows Platform) untergrub, aber einige Teile wurden beibehalten und bilden die Basis für bash für Windows. Im Laufe des Kurses hat Microsoft mit Canonical (den Entwicklern von Ubuntu Linux) zusammengearbeitet, um ihnen ein natives Image mit allen unterstützten Tools / Binärdateien 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)
quelle
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux"
Und Folgendes aus dem Windows-Store installieren: Ubuntu, Debian, OpenSUSE, Kali LinuxHier finden Sie eine Liste der ab 2018-05 verfügbaren Optionen mit einigen Aktualisierungen in Bezug auf die WSL im Zeitraum 2019-01 sowie einige Details zu den einzelnen Optionen.
Optionen, die auffallen
Cygwin und Babun
Cygwin bietet Folgendes:
Cygwin ist bestrebt, die Portierung von Linux-Anwendungen auf Windows zu vereinfachen. Wenn ein C-Programm für Unix entwickelt wurde und Funktionen wie Pipes, Datei- und Verzeichniszugriff im Unix-Stil usw. verwenden soll, können Sie es für Cygwin kompilieren. Cygwin fungiert dann als Kompatibilitätsebene zwischen dem Code und dem fremden Betriebssystem (Windows). . Auf diese Weise kann dasselbe C-Programm unter Linux und Windows ohne oder mit nur geringen Änderungen ausgeführt werden. Eine riesige Liste von Linux-Programmen wurde damit erfüllt und kann ausgeführt werden, wenn Sie Cygwin installieren. Allerdings müssen Sie als Benutzer dieser Programme wahrscheinlich mit Unix vertraut sein. Beispielsweise müssen Sie möglicherweise Argumente wie
/cygdrive/c/autoexec.bat
anstelle von übergebenc:\autoexec.bat
und bereit sein, die Ausgabe mit Unix-Zeilenterminierung (\n
) anstelle von Windows-Zeilenterminierung (\r\n
) zu verarbeiten.Die Sammlung aller Cygwin-Programme umfasst ein Repository. Obwohl Cygwin über keinen herkömmlichen Linux-Paketmanager verfügt, können Sie Programme in diesem Repository jederzeit auf eine sehr kontraintuitive Weise hinzufügen, entfernen und aktualisieren (Sie führen die Datei setup.exe von Cygwin unter aus jederzeit nach Abschluss der Installation)
Babun ist Cygwin mit einem umfassenden Paketmanager (Pakt), oh-my-zsh für seine Shell, Git, automatischen Updates und einer Plug-in-orientierten Architektur. Obwohl die Standard-Shell zsh ist, können Sie leicht zu bash wechseln. Es scheint ein schönes Upgrade von Vanille Cygwin zu sein, wenn Sie das zusätzliche Gewicht nicht stören.
Mingw-w64
Mingw-w64 bietet Folgendes:
MinGW ist in erster Linie eine Softwareverteilung und eine Bauplattform für Windows. Insbesondere ist es ein Windows-Port der GNU-Compiler-Tools wie GCC, make, bash und so weiter. Es enthält eine ganze Reihe von GNU-Tools und eine minimale Unix-Kompatibilitätsebene.
Der Hauptunterschied zwischen Mingw-w64 und Cygwin liegt in den Prioritäten: Cygwin strebt eine vollständige POSIX-Kompatibilitätsebene an, die eine vollständige Implementierung aller wichtigen Unix-Systemaufrufe und -Bibliotheken umfasst. Leistung ist sekundär zur Kompatibilität. MinGW strebt nach Leistung, sodass bestimmte POSIX-APIs nicht bereitgestellt werden, die unter Windows nicht einfach und / oder schnell genug implementiert werden können. Das Hauptziel von MinGW sind auch Softwareentwickler. Nichtsdestotrotz können Gelegenheitsbenutzer auch die Shell und die enthaltenen allgemeinen Hilfsprogramme genießen.
MSYS2 und Git für Windows
MSYS2 bietet Folgendes:
MSYS2 ist auch in erster Linie eine Softwareverteilung und eine Plattform für Windows wie MinGW, kombiniert jedoch sowohl die Art von Cygwin als auch die Art von MinGW. Mit MSYS2 können Sie entweder "MinGW-Programme" oder "MSYS2-Programme" erstellen . Die spätere Verknüpfung mit der Kompatibilitätsschicht von MSYS2 (msys-2.dll), die die Entwicklung der Kompatibilitätsschicht von Cygwin mit ein paar Ergänzungen / Modifikationen genau verfolgt . Die Repositories der beiden Projekte sind jedoch völlig unabhängig. Obwohl sowohl MSYS2 als auch Cygwin bereitgestellt werden, haben
grep.exe
sie möglicherweise eine völlig andere Version.Git für Windows ist entweder nur MSYS2 mit installiertem Git oder basiert zumindest stark auf MSYS2 . Es bietet die gleiche Shell (Bash), Terminal (Mintty) und Paket-Manager (Pacman). Es scheint der beliebteste Weg zu sein, den dominanten Git unter Windows zum Laufen zu bringen, und zusammen mit ihm erhalten Sie eine schöne Unix-Umgebung.
Windows-Subsystem für Linux (WSL)
Die WSL löst das gleiche Problem mit einer völlig anderen Methode. Sie führen denselben Code aus wie auf einem Linux-System mit WSL, das Kernel-Aufrufe abfängt und in Windows-Kernel-Aufrufe übersetzt (das Gegenteil von Wine). Natürlich kann die Übersetzung nicht perfekt sein , aber Microsoft hat die droped Beta Warnung . Da die WSL vor 2018 auf Windows Server nicht verfügbar war, habe ich mich nicht so intensiv damit befasst. Wie auch immer, Sie erhalten eine nette Bash-Shell mit den meisten CLI-Extras, die Sie auf einer Ubuntu-Standardinstallation erwarten würden. Microsoft gibt offiziell an, dass "WSL nicht darauf abzielt, GUI-Desktops oder -Anwendungen zu unterstützen"Es gibt jedoch inoffizielle Anweisungen dazu. Aus heutiger Sicht (Anfang 2018) sind die Hauptnachteile von WSL folgende: a) Das Rendern des Bildschirms und der Festplattenzugriff sind sehr langsam. B) Sie sollten keine WSL (Linux) -Dateien unter Windows bearbeiten. C) es läuft nur unter 64bit Windows. Hier ist ein alter, aber netter Vergleich mit Cygwin (beachten Sie, dass Rich Turner Mitglied des WSL-Teams ist und viele nützliche Informationen zur WSL gepostet hat)
Gemeinsamkeiten
Abgesehen von der WSL haben die meisten der oben genannten Tools viele gemeinsame Technologien (Bibliotheken, ausführbare Dateien, Konzepte). Zum Beispiel hängt die Bash-Shell, die mit MinGW geliefert wird, von msys-2.dll ab, die selbst eine Abzweigung von cygwin.dll ist. Also ja, es gibt viel Raum für Verwirrung :-)
Mehr Optionen
Cmder bietet nur ein nettes Terminal und eine bash-artige Shell für Windows. Die Hauptkomponente ist Conemu (das Terminal). Darüber hinaus wird Clink hinzugefügt, das eine leistungsstarke Befehlszeilenbearbeitung im Bash-Stil , ein benutzerdefiniertes Eingabeaufforderungslayout und das Monokai-Farbschema bietet. Es ist in hohem Maße (oder möglicherweise vollständig) kompatibel mit nativen Windows-Konsolenprogrammen.
Scoop bietet einen Befehlszeilen-Paketmanager für viele bekannte plattformübergreifende Programme, einschließlich vieler GNU-Tools. Es werden vorkompilierte Pakete heruntergeladen. Es bietet weder eine Shell noch ein Terminal, sondern läuft unter Windows 'cmd.exe (mit all seinen Einschränkungen, aber auch mit seiner vollen Kompatibilität mit nativen Windows-Konsolenprogrammen). Es enthält auch keine Compiler-Suite (aber natürlich sind Compiler und Entwicklungstools typische Pakete, die Sie mit scoop installieren können). Viele der von Scoop installierten Programme stammen entweder direkt aus dem MinGW / MSYS-Projekt oder wurden mit ihren Tools erstellt.
Noch mehr Möglichkeiten
Die folgenden Lösungen scheinen nicht aktiv zu sein und ich habe sie nie getestet, aber sie scheinen die Arbeit für andere zu erledigen:
Gow (Gnu On Windows) ist die leichtgewichtige Alternative zu Cygwin ohne Shell. Es verwendet ein praktisches Windows-Installationsprogramm, mit dem ungefähr 130 äußerst nützliche Open-Source-Linux-Anwendungen installiert werden, die als native Win32-Binärdateien kompiliert und über die Windows-Datei cmd.exe verfügbar sind. Es soll so klein wie möglich sein (ca. 10 MB).
UnxUtils & GnuWin32 : UnxUtils ist eine Sammlung von Ports allgemeiner GNU-Unix-ähnlicher Dienstprogramme für natives Win32, deren ausführbare Dateien nur von der Microsoft C-Laufzeitdatei msvcrt.dll abhängen. Sie müssen den Hauptteil und einige Updates herunterladen. GnuWin32 hat spätere Versionen als UnxUtils, benötigt aber unterstützende Dateien (zB DLLs)
MSYS & MinGW scheinen zu haben wurde verworfen wurde von MSYS2 & MinGW-W64 so dass ich nie sah sie an.
Einige häufige Probleme bei Cygwin und MSYS2
In Bezug auf das Terminal
Mintty ist das in Cygwin, MSYS2 und deren Derivaten verwendete Terminal. Man sollte sich bewusst sein, dass wenn Sie Windows native Konsolenprogramme ausführen, dies kein schmerzloser Ersatz für die Windows-Eingabeaufforderung ist. Während Programme mit einfacher Textausgabe normalerweise gut funktionieren, haben interaktive und Vollbild-Programme häufig Probleme. Lesen Sie mehr auf der Homepage von Mintty und den Eintrag "Einige native Konsolenprogramme funktionieren nicht, wenn sie von Git Bash ausgeführt werden" in den häufig gestellten Fragen zu Git für Windows . In diesem Eintrag finden Sie die folgenden Empfehlungen, wenn Sie auf Probleme dieser Art stoßen:
Andere Probleme
Die zwei wichtigsten Dinge, die Sie beachten sollten, sind folgende:
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 wenn sie zunächst nicht mit Ihrer Linux-Ebene zusammenhängen.
Wenn Sie nicht viel Linux-Erfahrung haben, sollten Sie keine leistungsfähigeren Lösungen wie Cygwin / MSYS2 / MinGW verwenden
UnxUtils und GnuWin32 haben die geringste Leistung, aber auch das geringste Potenzial, Kopfschmerzen zu verursachen. Cygwin und ähnliches wird die Messlatte sowohl bei der Leistung als auch bei den Kopfschmerzen anführen. Cmder ist irgendwo in der Mitte. Wenn Sie also die leistungsstärksten Lösungen benötigen, schlafen Sie gut und konzentrieren Sie sich. Vermeiden Sie leistungsfähige Lösungen, während Sie etwas Neues und möglicherweise Instabiles testen. Vergessen Sie auch nicht, dass Lösungen mit mittlerer Komplexität wie cmder nicht makellos sind.
Das Problem, dass Linux-Befehle Windows-Befehle spiegeln, 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 es unter Cygwin ausgeführt wird, schlägt dies fehl, da timeout ebenfalls ein Linux-Befehl ist, der jedoch eine andere Syntax aufweist. Nachdem ich das Problem entdeckt habe, habe ich herausgefunden, dass ich ein PATH = ... am oberen Rand der .bat-Datei hinzufügen kann, um sicherzustellen, dass der Windows-Befehl Priorität hat. Aber dann bekam ich einen noch kryptischeren Fehler "Eingabeumleitung wird nicht unterstützt" und entschied mich für eine Problemumgehung, bevor ich den Grund fand.
Hier ist ein Beispiel für ein Problem mit cmder. Ich habe die Windows-Version von unison unter Cmder ausgeführt und unter bestimmten Umständen hing sie ohne Fehlermeldung . Unter cmd.exe lief immer derselbe Befehl perfekt. Das Komische ist, dass es auch unter Cygwin einwandfrei lief (wenn Sie Unicode-Dateinamen haben, ist ein Cygwin-Terminal sogar besser als cmd.exe, da cmd.exe häufig fehlerhaften Unicode-Text anzeigt).
Über diese Anleitung
In den Jahren 2017-05 hatte ich es satt, die Unterschiede der oben genannten Tools nicht zu verstehen, obwohl ich einige davon schon vor langer Zeit verwendet habe (hauptsächlich CygWin und cmder, aber nie für Entwicklungszwecke). Also habe ich ein paar Stunden damit verbracht, die Landschaft zu graben. Diese Anleitung ist das Ergebnis meiner Notizen. Ich bin kein Experte auf dem Gebiet, aber ich habe mich bemüht, alle relevanten Informationen zu finden, sie mit kritischem Auge zu lesen und die wichtigsten Teile klar darzustellen. Bitte kommentieren Sie, wenn etwas falsch scheint und ich werde mein Bestes tun, um es zu korrigieren.
Zum Schluss 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 gleich sind, aber es ist sehr schwierig, sie zu unterscheiden, wenn man sich einem Thema von einer so großen Entfernung nähert. Auch wenn es nicht schwierig ist, braucht es Zeit, die ich nicht habe ;-)
quelle
pacman
nichtpackman
Ich würde vorschlagen, dass Sie eine minimale Menge von MinGW und auch eine minimale Menge von MSYS herunterladen und installieren . Mit dem MinGW-Installationsprogramm können Sie auf einfache Weise auswählen, welche Pakete installiert werden sollen. Wenn Sie nur BASH benötigen, dauert die Installation nur wenige Megabyte.
UPDATE: Ich bin zu MSYS2 gewechselt, das viel weiter fortgeschritten ist und über die Portierung von ArchLinux Pacman für die Paketverwaltung verfügt. Das MSYS2-Installationsprogramm hat alles, was Sie brauchen, und es verwendet Minze, was absolut perfekt ist.
quelle
Es gibt auch Clink erhältlich bei GitHub . Es integriert sich mithilfe von Hook-Bibliotheken in die Windows-Eingabeaufforderung.
Aus der Projektbeschreibung:
(daher bietet es keine Funktionen für die Programmiersprache Bash-as-a-Programming oder andere Unix-Extras)
Ich benutze Linux bei der Arbeit und finde mich manchmal in cmd zurecht, was sich nicht so verhält, wie ich es von Bash erwarte. Mit Clink kann ich einige dieser Mängel beheben.
In letzter Zeit habe ich auch ein vielversprechendes, aber noch nicht alltägliches Projekt namens flinux entdeckt , das Linux-Systemfunktionen emuliert und darüber eine Art System bereitstellt (derzeit basiert es auf Arch Linux).
quelle
cmd.exe
, genau wie auf der Seite beschrieben;)Zusätzlich zu dem, was faffaffaff sagte , enthält Git für Windows Bash und einige gängige Linux-Befehlszeilenprogramme (z. B. Vim , sed und gawk ). Es basiert auf MSYS . Die Version der Programme ist zwar alt, zum Beispiel ist Bash Version 3.1. Cygwin verfügt über neuere Versionen der Dienstprogramme.
Ich verwende ConEmu auch als Terminal-Emulator (hauptsächlich zum Hervorheben der Syntax in Vim, für Registerkarten und zum leichteren Einfügen von Texten). console2 ist ebenfalls ein beliebter Terminalemulator, den ich jedoch noch nicht ausprobiert habe.
quelle
Dies ist eines der ersten Dinge, die ich mache, wenn ich einen neuen Windows-Computer einrichte:
Eine funktionale und elegante Konsole in Windows
quelle
Ich habe es gerade mit Babun versucht , das den Cygwin intern integriert hat, und schmeckt mir gut :)
Die Download-Datei ist etwas groß, ca. 250 MB. Die Installation ist jedoch unkompliziert. Es muss nichts konfiguriert werden und es funktioniert einfach!
quelle