引言
msys2 官网 :https://www.msys2.org/
对于我本人来说,不喜欢powershell,也许因为我不会使用它也懒得花时间学习或者对bash环境情有独钟,所以我一致期望在windows下能有一个bash环境,我选择的目标可以有 wsl,Cygwin,虚拟机,msys2。但是这些有的太大占空间,有的性能不好。虚拟机&wls
:目前我的需求并没有那么大,况且我有服务器里面可跑着原生的linux
,这里编译的程序无法直接运行在windows上。
我们看看其他选择:
特点 | Cygwin | MinGW/MSYS | MSYS2 |
---|---|---|---|
是否GNU | 否 | 是 | 是 |
更多软件支持? | 支持绝大多数的 GNU 软件 | 支持常用软件,git、Vim等软件需要独立支持(详细介绍见下方) | 支持大多数 GNU 软件 |
更类Linux? | Cygwin在Windows中就好像Wine在Linux中 | 实现了Bash等主要的Linux程序 | 原生64/32bit支持 |
GCC编译 | 内含MingGW32交叉编译功能,既支持依赖cygwin1.dll的程序编译,也支持独立的Windows程序编译;可以直接编译Linux下的应用程序 | 支持独立的Windows程序编译 | 支持独立的Windows程序编译 |
中文支持 | 直接支持中文显示和输入法 | 需要配置才能支持中文显示和输入,删除一个中文字符需要删除2次 | 支持中文显示和输入法,中文帮助系统和中文提示(部分软件) |
运行速度 | 慢 | 快 | 快 |
显然,msys更适合我的需求----我就想在windows上使用 bash
使用msys2 打造巴适的bash环境
效果
先看一下效果,本人使用的是win11自带windows terminal并且可以可以在任意目录右键打开terminal,如果你使用的win10可以自行去安装一下,修改注册表将其添加到右键来,可以参考链接:https://blog.csdn.net/weixin_42216574/article/details/107794358
这样可以在任意位置打开bash,在bash中我们可以使用 start <路径>
打开资源管理器 ,比如 start .
打开当前路基
msys不但支持常用的bash命令,还有很多重量级编译好的软件包。
嗯我非常喜欢。这里我安装了ohmyszh
看着也舒适多多了,当然再这里执行powershell命令也是没问题的.
这里我简单记录 重要的安装配置和一些工具的使用。
- 基本安装
- 整合在terminal中
- 安装 ohmyzsh
- 一些好用的包
基本安装
基本的软件安装 官网有教程,这里不再赘述了,传送门:https://www.msys2.org/
在安装完成之后看一下安装路径,
这结构和unix系统结构非常相似,其实msys主要是方便程序员配置 mingw clang , 在mingw32 、mingw64 、clang64等路径下存在一个局部的类uninx文件结构,emmm这里感觉很不舒服。
发现这里有 很多exe, 这里分别代表不同环境的下的bash,例如 mingw64.exe就是 mingw64路径下的bash、msys2是全局的,当然这里的我一个都不使用。
这里我们为了在命令行中使用基本GNU工具,将/usr/bin加入到环境变量中,这一点非常重要。
换源
和众多linux包管理器一样,为了不错的下载速度,我们必须为pacman换源具体方法如下:
这里我们使用清华源,方法摘自 https://mirrors.tuna.tsinghua.edu.cn/help/msys2/
编辑 /etc/pacman.d/mirrorlist.mingw32
,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
编辑 /etc/pacman.d/mirrorlist.mingw64
,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
编辑 /etc/pacman.d/mirrorlist.ucrt64
,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/ucrt64
编辑 /etc/pacman.d/mirrorlist.clang64
,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/clang64
编辑 /etc/pacman.d/mirrorlist.msys
,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
然后执行 pacman -Sy
刷新软件包数据即可。
terminal 启动 bash
现在版本的terminal的设置无需通过修改josn文件来添加终端,方便了很多,大致配置如下:

注意要使用 \usr\bin\bash.exe
, 我们还可与给他设置一个默认的启动路径。
可以将该配置设置为默认。
如果你在 前面将 \usr\bin\
加入到环境变量的话,那么你应该可以使用不少基本gnu下单工具了。如果你想去到其他盘符 可以输入 cd /c
切换到C盘,无需挂载.
这里默认的家目录不少windows的那个,而是安装目录下的 /home
ohmyzsh安装
在完成前面换源操作之后,咱们安装一些git ,输入命令
pacman -S git # 安装git
有了bash环境,那么按照zsh是必须的,但是考虑到国内不可抗拒的因素,我们需要通过gitee安装,具体步骤如下:
安装教程
- git clone git@gitee.com/daotoyi/gitee-ohmyzsh.git
- cd gitee-ohmyzsh
- sh ./install.sh
使用说明
- vim install #安装文件中更换了地址。
# REPO=${REPO:-mirrors/oh-my-zsh}
REPO=${REPO:-daotoyi/ohmyzsh}
REMOTE=${REMOTE:-https://gitee.com/${REPO}.git}
- 下载之后直接执行sh ./install.sh即可。
其他个性化的配置
我暂时没有找到如何设置默认的shell为 zsh,不过别忘了 .bashrc 文件是每次用户启动bash都会执行一边的 ,我直接在该文件设置即可
直接在/home/<usrname>/.bashrc
末尾加入 zsh
其实使用zsh 就可以切换终端,输入cmd可以切换到 cmd, 输入bash就切换到bash,输入 powershell也就切换到shell中了.
这里告诉一个小技巧, 输入命令 :
code .
可以快捷的打开 vscode,而且打开了当前目录了哈.
修改 .zshrc
文件,可以配置主题等功能,我是的是 ZSH_THEME="bira"
安装基本包
命令如下:
# 安装gcc clang
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-clang mingw-w64-x86_64-lld mingw-w64-x86_64-gdb mingw-w64-x86_64-make mingw-w64-x86_64-polly mingw-w64-x86_64-compiler-rt
# 安装 基本工具 wget unzip zip tar
pacman -S wget unzip zip tar
# 安装 非常好用的种子下载器
pacman -S mingw-w64-x86_64-aria2
注意: gcc clang aria2 被放在了 \mingw64\bin
下,需要你将他也添加到 path中
vscode 配置 bash
我们虽然使用 pacman 安装了git ,但是vscode 无法识别, 没关系,经过查阅文档,发现可以点可以配置, 而且可以设置vscode的终端也为 bash. 打开vscode的 setting.json
,注:如果你不知道如何打开,可以在 设置 中搜索 setting
,出现下图的按钮点击即可.
这样我们就打开了vscode的全局设置,我的配置如下
{
//.......
//省略前面的配置
//这里添加到文件末尾即可
//zsh设置
"terminal.integrated.profiles.windows": {
"ohmyzsh": {
"path": "D:\\Software\\SDK\\msys64\\usr\\bin\\bash.exe", //设置为你的路径
}
},
"terminal.integrated.defaultProfile.windows": "ohmyzsh",
//git路径设置
"git.path": "D:\\Software\\SDK\\msys64\\git-wrap.bat", //设置为你的路径
}
参考文档:https://code.visualstudio.com/docs/getstarted/settings
附录
这里简单记录一下,方便查阅
pacman 包管理器
常用参数:
参数 | 包 |
---|---|
-R | 删除单个软件包 |
-Q | 列出已经安装的软件包 |
-U | 安装指定包 |
-S | 同步/安装 |
下面记录一下常用的操作对应的命令,方便后续查阅
安装
pacman -Syu # 同步Msys2源,并更新
pacman -Sy # 仅同步源
pacman -Su # 更新系统
pacman -S <packge-name> # 安装包
pacman -Sy <packge-name> # 与上面命令不同的是,该命令将在同步包数据库后再执行安装。
pacman -Sv <packge-name> # 在显示一些操作信息后执行安装
pacman -U <local/remote_packge-name> # 安装包,其扩展名为 pkg.tar.gz。
卸载
pacman -R <packge-name> # 该命令将只删除包,保留其全部已经安装的依赖关系
pacman -Rs<packge-name> # 在删除包的同时,删除其所有没有被其他已安装软件包使用的依赖关系
pacman -Rsc <packge-name> # 在删除包的同时,删除所有依赖这个软件包的程序
pacman -Rd <packge-name> # 在删除包时不检查依赖。
搜索包
pacman -Ss <keyword> # 在仓库中搜索含关键字的包。
pacman -Qs <keyword> # 搜索已安装的包。
pacman -Qi <packge-name> # 查看有关包的详尽信息。
pacman -Ql <packge-name> # 列出该包的文件。
其他用法
pacman -Sw <packge-name> # 只下载包,不安装。
pacman -Sc # 清理未安装的包文件,包文件位于 /var/cache/pacman/pkg/ 目录。
pacman -Scc # 清理所有的缓存文件。
aria2c 命令
下载
aria2c <url> -o <newname> # 下载并重命名
aria2c <url> -d <dir> # 下载到指定路径
aria2c -s 2 -x 2 -j 10 <url> # 使用两个线程 最大同时下载10个文件 -s 指定线程数 -x 指定最大线程数 -j 指定同时下载文件数
aria2c -c <url> # 断点续传
aria2c <xxx.torrnet> # 种子下载
aria2c --select-file=2-7 target.torrent # 下载种子内2-7文件
当然使用命令行 我指示感觉非常酷炫,而且快速,如果你不喜欢,使用 IDM或者其他工具, 作为成年人我当然都要