线索之 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
既提供整包安装,也可以使用m
ingw-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
.
Mintty
is a terminal emulator forCygwin
,MSYS
orMsys2
, 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
命令.
好了,感谢你的阅读,如果本文对你有所帮助,欢迎留言告诉我!
本文作者:雪之梦技术驿站,你在互联网的路上匆匆而来,雪之梦技术驿站助你满载而去。
声明:本文为 脚本之家专栏作者 投稿,未经允许请勿转载。