Ich benutze Git und Git Bash von https://git-scm.com/ . Hier finden Sie eine Seite mit weiteren Informationen: https://git-for-windows.github.io/ .
Gestern hatte ich ein Problem mit rsync
und fing an, mich eingehender mit Git Bash für Windows zu beschäftigen. Mir wurde klar, dass ich mir des Namens des Bash-Programms nicht sicher bin, da es nur mit dem git-scm-Download gebündelt ist. Ich nenne es Git Bash für Windows, was vernünftig erscheint.
Als ich mir "What is Git Bash" ansah , las ich etwas über Cygwin und ein anderes Ding namens mysys2 , das in Beziehung zu mysysGit
stehen scheint , und ich sah Hinweise darauf MinGW
. Aber dann habe ich in den FAQ gesehen, dass Mintty das Standardterminal für Git Bash ist.
Es scheint, dass die Bash-Anwendung tatsächlich ein speziell zusammengestelltes Bündel anderer Dinge ist (meistens oben aufgeführt), die unabhängig voneinander verfügbar sind.
Grundsätzlich möchte ich wissen, auf welcher Basis * nix-Befehle ssh
scp
cat
ls
in Git Bash für Windows funktionieren.
(Ich denke, eine gute Antwort würde jemandem helfen, in groben Zügen zu verstehen, wie diese Komponenten zusammenpassen und die richtigen Wörter für die Komponenten zu verstehen, aber ich möchte das SO-Frage / Antwort-Format nicht brechen.)
rsync
Frage an !!Antworten:
Zusammenfassung
Sie haben Recht, Git Bash für Windows ist nicht nur
bash
für Windows kompiliert. Es ist Paket , das enthältbash
(die eine ist die Befehlszeilen - Shell ) und eine Sammlung von anderen, separaten * nix - Utilities wiessh
,scp
,cat
,find
und andere ( mit dem Sie die Shell ausführen verwenden), für Windows kompiliert und eine neue Kommandozeilen - Schnittstelle Terminal Fenster angerufenmintty
.In einer Nussschale
Unter Windows können Sie Befehle wie
ipconfig /all
oderformat G:
mithilfe von ausführencmd.exe
. Diese Befehle sind aktuelle ausführbare Dateien unterC:\Windows\system32
, gespeichert alsipconfig.exe
undformat.com
Dateien.cmd.exe
ist von beiden getrennt und lädt und führt sie auf Benutzerwunsch aus.ssh
,scp
,cat
,find
Verwenden laufenbash
in genau der gleichen Weise. Sie werden normalerweise unter/usr/bin
und nicht inC:\Windows\system32
* nix-Systemen gespeichert , da die Dateistruktur von Windows und * nix unterschiedlich organisiert ist.Bei Git Bash für Windows befinden sich diese Programme im Git-Installationsordner:,
C:\Program Files\Git\usr\bin
der sich auch in der emulierten Linux-Umgebung unter befindet/usr/bin
.Genauso wie die Möglichkeit, nur
cmd.exe
auf * nix auszuführen, es Ihnen nicht erlaubt, viel ohne die anderen Systemdienstprogramme zu tun, ist es auch nicht sehr nützlich, Bash nur unter Windows ausführen zu können. Dies bedeutet, dass alle diese zusätzlichen Befehle zusammen mit Bash gebündelt werden müssen, um ein verwendbares Softwarepaket zu erstellen.Details: POSIX-Anwendungen unter Windows
Normalerweise werden diese zusätzlichen Befehle auf * nix-Systemen und nicht unter Windows gefunden, da sie mit der POSIX-Programmierschnittstelle (die von * nix verwendet wird) und nicht mit den Win32-APIs (die von Windows verwendet werden) programmiert wurden. Die POSIX-API-Dokumentation ist offen verfügbar, sodass einige Benutzer sie auf andere Systeme portiert haben, einschließlich Windows. Die Windows-Implementierung von POSIX-APIs / -Bibliotheken wird von
Cygwin
und bereitgestelltMSYS
.Dies ähnelt dem Wine-Projekt , konvertiert jedoch POSIX-> Windows und nicht Windows-> POSIX wie Wine.
Minze
mintty
ist enthalten, weilcmd.exe
im Standard-Windows-Befehlszeilenfenster einige wichtige Funktionen fehlen, die normalerweise auf den meisten * nix-Systemen verfügbar sind. In den meisten Fällenmintty
ist dies die bessere Wahl für die Ausführung von Befehlen (insbesondere für die Dienstprogramme, die mit dem Git Bash für Windows-Paket geliefert werden), aber gelegentlich funktioniert eine Windows-Systemanwendung möglicherweise bessercmd.exe
.quelle
ssh
scp
cat
ls
in Git Bash für Windows funktionieren". . Der Beitrag von Pabru beantwortet beide Fragen sehr gut und ist eine korrekte Antwort für alle, die dieselbe Frage haben (wie angegeben). Indem Sie akzeptieren, dass Sie anderen Benutzern helfen, helfen Sie ihnen. Haben Sie versucht, eine neue Frage für dasrsync
Problem zu stellen?Hintergrund
Ich bin der OP. Ich wollte ursprünglich nur den formalen Namen für dieses Ding wissen, das ich benutzte.
Jetzt denke ich, der Name ist "Git Bash for Windows". Leider ist die vollständige Antwort kompliziert, da es sich bei dieser Sache eigentlich um eine Menge Dinge handelt.
Die Top-Antwort aus dem Jahr 2016 war ursprünglich für mich nicht hilfreich, wurde aber stark überarbeitet und immer hilfreicher. Trotzdem fehlen einige meiner ursprünglichen Fragen.
Der Anfang:
msysgit
Eigentlich ist der Anfang wahrscheinlich
MSYS
, aber wirklichMSYS2
. Der Begriff "msysgit" ist ein guter Begriff, um herauszufinden, was passiert, wenn XYZ schief geht. sachen wie "wo in der @ * #! sind alle autocrlf einstellungen gespeichert?!?!?!?"Die README- Datei ( https://github.com/msysgit/msysgit ) im msysgit-Projekt erläutert die Beziehung zwischen den Komponenten:
Übrigens, nur für den Fall, dass die vollständige README gelöscht wird, habe ich sie in eine Liste kopiert .
Das Terminalfenster:
mintty
Der andere Teil von Git Bash für Windows ist die eigentliche Windows-Befehlszeile, mintty. Gott sei Dank gibt es, aber ich muss nicht googeln.
Referenzen für MSYS2
Ihr Wiki ist eine wahre Fundgrube an Details zur MSYS2-Umgebung: https://github.com/msys2/msys2/wiki
In der Einleitung ist dieser Teil für meine ursprüngliche Frage am relevantesten:
Diese Diskussion ist auch sehr hilfreich: https://sourceforge.net/p/msys2/discussion/general/thread/dcf8f4d3/#8473/588e
quelle