Felizmente he estado usando Git y Git Bash de https://git-scm.com/ . Hay una página con más información aquí: https://git-for-windows.github.io/ .
Ayer me encontré con un problema rsync
y comencé a profundizar en Git Bash para Windows. Me di cuenta de que ni siquiera estoy seguro del nombre del programa Bash, porque solo está incluido con la descarga de git-scm. Lo llamo Git Bash para Windows, lo que parece razonable.
Al analizar "¿Qué es Git Bash", leí sobre Cygwin y una cosa diferente llamada mysys2 , que parece estar relacionada mysysGit
, y vi referencias a ella MinGW
. Pero, luego vi en las preguntas frecuentes que mintty es el terminal predeterminado para Git Bash.
Parece que la aplicación Bash es en realidad un paquete especialmente curado de otras cosas (en su mayoría enumeradas anteriormente) que están disponibles de forma independiente.
Básicamente, me gustaría saber cuál es la base que hace que los comandos * nix ssh
scp
cat
ls
funcionen en Git Bash para Windows.
(Creo que una buena respuesta ayudaría a alguien a comprender, a grandes rasgos, cómo encajan estos componentes y a comprender las palabras correctas para los componentes, pero no quiero romper el formato de preguntas / respuestas SO).
rsync
pregunta original !Respuestas:
Resumen
Tienes razón, Git Bash para Windows no solo se
bash
compila para Windows. Es paquete que contienebash
(que es un shell de línea de comandos ) y una colección de otros, servicios públicos separados * nix comossh
,scp
,cat
,find
y otros (el que se ejecuta utilizando la cáscara), compilado para Windows, y un nuevo terminal de la interfaz de línea de comandos ventana llamadamintty
.En una palabra
En Windows puede ejecutar comandos como
ipconfig /all
oformat G:
usandocmd.exe
. Estos comandos son archivos ejecutables realesC:\Windows\system32
, almacenados comoipconfig.exe
yformat.com
archivos.cmd.exe
está separado de ambos y los carga y los ejecuta a petición del usuario.ssh
,scp
,cat
,find
Se ejecutan utilizandobash
exactamente de la misma manera. Por lo general, se almacenan/usr/bin
en losC:\Windows\system32
sistemas * nix en lugar de en ellos , porque Windows y * nix tienen su estructura de archivos del sistema organizada de manera diferente.En el caso de Git Bash para Windows, estos programas se encuentran en la carpeta de instalación de Git:
C:\Program Files\Git\usr\bin
que también se puede encontrar en el entorno Linux emulado en/usr/bin
.Al igual que poder ejecutar
cmd.exe
en * nix no le permite hacer mucho sin las otras utilidades del sistema, tampoco es muy útil poder ejecutar Bash en Windows. Esto significa que todos estos comandos adicionales deben combinarse con Bash para crear un paquete de software utilizable.Detalles: aplicaciones POSIX en Windows
Normalmente, esos comandos adicionales se encontrarían en los sistemas * nix y no en Windows, porque se han programado con la API de programación POSIX (que es lo que usa * nix), y no con las API Win32 (que es lo que usa Windows). La documentación de la API POSIX está abiertamente disponible, por lo que algunas personas la han portado a otros sistemas, incluido Windows. La implementación de Windows de las API / bibliotecas POSIX son proporcionadas por
Cygwin
yMSYS
.Esto es algo similar a lo que hace el proyecto Wine , pero convierte POSIX-> Windows en lugar de Windows-> POSIX como Wine lo hace.
mintty
mintty
se incluye porquecmd.exe
, en la ventana de línea de comandos predeterminada de Windows, faltan algunas características importantes que normalmente están disponibles en la mayoría de los sistemas * nix. En la mayoría de los casos,mintty
es una mejor opción para ejecutar comandos (ciertamente para las utilidades que vienen con el paquete Git Bash para Windows), pero ocasionalmente una aplicación de sistema de Windows puede funcionar mejorcmd.exe
.fuente
ssh
scp
cat
ls
funcionen en Git Bash para Windows". . La publicación de Pabru responde ambas preguntas bastante bien y es una respuesta correcta para cualquiera que tenga la misma pregunta (como se indicó), por lo que al aceptarla, está ayudando a otros usuarios. ¿Has intentado publicar una nueva pregunta para elrsync
problema?Antecedentes
Soy el OP. Originalmente solo quería saber el nombre formal de esta cosa que estaba usando.
Ahora creo que el nombre es "Git Bash para Windows". Lamentablemente, la respuesta completa es complicada porque esto es en realidad muchas cosas.
La respuesta principal de 2016 originalmente no fue útil para mí, pero se ha editado en gran medida y se ha vuelto cada vez más útil. Aún así, se pierde parte de mi pregunta original.
El principio:
msysgit
En realidad, el comienzo es probablemente
MSYS
, pero realmenteMSYS2
. El término "msysgit" es un buen término para realizar una búsqueda para descubrir qué sucede cuando XYZ sale mal; cosas como "¿dónde en el @ * #! se almacenan todas las configuraciones de autocrlf?!?!?!?"El archivo README ( https://github.com/msysgit/msysgit ) en el proyecto msysgit explica la relación entre los componentes:
Por cierto, en caso de que se elimine el archivo README completo, lo copié en una esencia .
La ventana de terminal:
mintty
La otra parte de Git Bash para Windows es la línea de comandos real de Windows, mintty. Gracias a Dios que existe, pero no es algo que necesito para googlear.
Referencias para MSYS2
Su wiki es un verdadero tesoro de detalles sobre el entorno MSYS2: https://github.com/msys2/msys2/wiki
En la introducción, esta parte es más relevante para mi pregunta original:
Esta discusión también es muy útil: https://sourceforge.net/p/msys2/discussion/general/thread/dcf8f4d3/#8473/588e
fuente