线索之 WSL
WSL:Windows Subsystem for Linux的缩写,项目地址: https://github.com/mintty/wsltty
原文: Mintty as a terminal for WSL (Windows Subsystem for Linux).
翻译:
Mintty是为WSL而生的终端,WSL是实现Linux系统体验的Windows的子系统.
由此可见,Mintty 的最终目的是打造 Windows 上的 linux 体验,本质还是 Windows 系统.
wsltty 项目没有提供更多细节供我们继续参考,但是却给我们留下一条线索,wsltty 和 mintty 同属于 mintty 组织项目.
不知道这种命名有没有什么内在联系,wsltty 去掉后面的 tty 是 wsl ,而 wsl 是 Windows Subsystem for Linux 的缩写.
那么 mintty 去掉后面的 tty 剩下就是 min ,又是什么单词的缩写呢?
暂时不得而知,既然已经来到 mintty 的组织账号,那我们不妨顺便看一下 mintty 本身项目.
仅仅是简单的项目介绍,并没有额外信息,看来 WSL 这条线索到此为止了.
线索之 Cygwin
在
Windows上获得linux的感觉. 官网: https://cygwin.com/
Cygwin 是 GNU 工具,在 windows 上获得 linux 的体验,但并不能运行原生 linux 程序,必须重新编译源代码才能在 windows 上运行.
现在我们知道 Cygwin 是一种功能,用来在 windows 系统上获得 linux 的感觉,其中 Cygwin 源代码中涉及到 GNU 这这个陌生名词.
线索之 MSYS
MinGW适用于Windows的极简GNU,官网: http://mingw.org/wiki/MSYS
原文: SYS is a collection of GNU utilities such as bash, make, gawk and grep to allow building of applications and programs which depend on traditionally UNIX tools to be present. It is intended to supplement MinGW and the deficiencies of the cmd shell.
翻译:
MSYS是一组GNU实用程序,如bash,make,gawk和grep,可以构建依赖于传统UNIX工具的应用程序和程序.它旨在补充MinGW和cmd shell的缺陷.
MSYS是GNU工具集合,旨在补充MinGW和cmd shell的缺陷.
原文: A common misunderstanding is MSYS is "UNIX on Windows", MSYS by itself does not contain a compiler or a C library, therefore does not give the ability to magically port UNIX programs over to Windows nor does it provide any UNIX specific functionality like case-sensitive filenames. Users looking for such functionality should look to Cygwin or Microsoft's Interix instead.
翻译: 一个常见的误解是:
MSYS是 "Windows上的UNIX",MSYS本身不包含编译器或C库,因此无法将UNIX程序神奇地移植到Windows,也不提供任何UNIX特 定功能,如大小写-敏感文件名.寻找此类功能的用户应该选择Cygwin或Microsoft的Interix.
MSYS并不是windows上的Unix,完整的解决方案应该选择Cygwin或Interix等.
原文: Up to MSYS 1.0.11, all components of MSYS were distributed in one single installer you downloaded and ran. While convenient, this made it difficult to update individual components. So, all the MSYS components are now available as separate downloads managed by mingw-get (see Getting_Started (currently alpha release).
翻译: 在
MSYS 1.0.11之前,MSYS的所有组件都分布在您下载并运行的一个安装程序中.虽然方便,但这使得更新单个组件变得困难.因此,所有MSYS组件现在都可以作为mingw-get管理的单独下载提供(请参阅Getting_Started(目前为alpha版).
MSYS既提供整包安装,也可以使用mingw-get包管理功能单独下载.
现在我们知道了 MSYS 是一套工具包,旨在补充 MinGW 和 cmd shell 的缺陷. 这里再次暴露了一个名词---MinGW ,但是我们可以猜测出 MinGW 应该和 Cygwin 一样是一种系统.
线索之 MSYS2
MSYS2是Windows的软件发行版和构建平台,官网: http://www.msys2.org/
原文: At its core is an independent rewrite of MSYS, based on modern Cygwin (POSIX compatibility layer) and MinGW-w64 with the aim of better interoperability with native Windows software. It provides a bash shell, Autotools, revision control systems and the like for building native Windows applications using MinGW-w64 toolchains.
翻译: 其核心是基于现代
Cygwin(POSIX兼容层)和MinGW-w64的MSYS的独立重写,旨在与本机Windows软件实现更好的互操作性.它提供了一个bash shell,Autotools,修订控制系统等,用于使用MinGW-w64工具链构建本机Windows应用程序.
MSYS2基于MSYS的重写,核心基于Cygwin,使用MinGW-w64来构建应用程序.
目前为止,我们已经了解了 Cygwin ,MSYS 和 MSYS2 系统,它们都是为了在 Windows 系统上获得类 Unix 操作体验,其中 MSYS2 是 MSYS 的升级版,MSYS 基于 Cygwin
这些系统都有自己的包安装工具,注意的是 MSYS 并不像 MSYS2 那样,它只是工具集,为了MinGW 提供扩展支持.
整理线索朋友圈
目前为止,我们以 Mintty 为中心,逐步分析了解了 Cygwin , MSYS 和 MSYS2,并且顺便了解下 WSL .
Minttyis a terminal emulator forCygwin,MSYSorMsys2, and derived projects, and forWSL.
git bash选择mintty作为默认终端,而mintty本身又是msys2和cygwin的默认终端.msys是gnu工具集,旨在补充mingw.msys2重写了msys,大部分基于cygwin.cygwin也是gnu开源产品,让你在windows上获得linux的感觉.
根据目前我们了解到的知识,已经大致了解了基本情况,一直频繁出现的 gnu 又是什么鬼?
新线索再次出发
GNU操作系统,官网: http://www.gnu.org/
看到这里一切恍然大悟,原来 GNU 是自由软件运动,从而诞生了自由软件,进而有个自由操作系统.
前面介绍的 Cygwin 和 MSYS2 以及 MinGW 应该都是自由操作系统,只不过这些系统旨在 windows 系统上打造 linux ,从而获取到 linux 的体验.
拨开迷雾见青天
简单总结下 git bash 的朋友圈:
GNU是GNU's Not Unix的递归缩写,是自由操作系统,包括一系列的自由软件.MinGW是Minimalist GNU for Windows的缩写,极简主义的GW,基于Cygwin二次开发.Cygwin是自由系统,让你在Windows上获得linux的感觉.mintty是终端模拟器,是MinGW,MSYS2和Cygwin的默认终端,与原生控制台程序交互需要借助winpty封装调用.
现在总算弄清楚了 git bash 的朋友圈,再看一看 git bash 中他们在哪?
MinGW64 和 MinGW32 都是 MinGW 系统,分别对应 Windows 的64位和32位操作系统.
mintty 是 GNU 自由软件,是一种终端模拟器.
知其然下次再见
既然我们明白了 git bash 的相关知识,那么想要理解 git bash 为什么支持 linux 命令或者说为什么不支持某些 linux 命令已经有了大概印象.
下次我们将以具体的实际例子分析,为什么 git bash 不支持 tree 命令以及如何才能在 git bash 使用 tree 命令.
好了,感谢你的阅读,如果本文对你有所帮助,欢迎留言告诉我!
本文作者:雪之梦技术驿站,你在互联网的路上匆匆而来,雪之梦技术驿站助你满载而去。
声明:本文为 脚本之家专栏作者 投稿,未经允许请勿转载。









