Msys2 是 Windows 下的一款 Unix Like 终端 & Shell 软件,提供了 Clang、MinGW 等开发环境和一些 GNU 软件,可以替代 Pwsh 作为终端来使用。

安装

下载官网给出的安装包进行安装。

包管理

Msys2 使用 Pacman 作为包管理工具,Arch 用户再熟悉不过了,操作也和 Arch 一样。

由于某些因素,最好换一下国内镜像仓库。点击开始菜单打开 MSYS2 MSYS,替换 USTC 镜像

1
$ sed -i "s#mirror.msys2.org/#mirrors.ustc.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*

替换之后,我们更新一下仓库信息和软件。

1
$ pacman -Syyu

用户目录

键入 pwd,可以看到 Msys2 环境中的用户目录与 Windows 的并不一样,如果希望与 Windows 共用用户目录并复用 ssh、git 等配置,可以将 Windows 用户目录挂载到 Msys2 环境的 /home 目录。

使用一款文本编辑器打开 C:\msys64\etc\fstab,添加一行

1
C:/Users /home ntfs binary,noacl,auto 1 1

保存后,我们还需要添加一个环境变量才能生效。

设置 Windows 用户环境变量

打开高级系统设置,添加用户变量,

  • HOME=%USERPROFILE%

  • PATH=C:\msys64\usr\bin:$env:PATH # 这里只列举了一些,目的是使 pwsh 能使用 Msys2 安装的软件

具体的操作如图。

添加 HOME 变量

添加 PATH 变量

安装一些软件

根据自己的需求,装一些软件,

1
$ pacman -S neofetch git zsh vim

如果你已经在 Windows 上装过了 git,就没必要再次安装。

neofetch

配置 zsh

上面我们已经安装好 zsh,现在设置一下默认 Shell,首先我们将 passwd 文件释放出来

1
$ mkpasswd > /etc/passwd

然后编辑 /etc/passwd 文件,你可以选择在 Msys2 中使用 vim /etc/passwd,也可以用 Windows 的编辑器找到 C:\msys64\etc\passwd 打开,找到你的用户名那一行,将最后的 /usr/bin/bash 改为 /usr/bin/zsh。

设置 shell 为 zsh

配置 ohmyzsh

现在我们可以配置一下 ohmyzsh

1
$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

对于 p10k 等等,这部分可以直接问搜索引擎,不多赘述。

设置 IDE 终端

以 VS Code 为例,默认情况下安装后 VS Code 的终端里是没有 Msys2 的,我们需要手动添加一下。

打开 settings.json, 添加如下配置,

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"terminal.integrated.profiles.windows": {
"zsh": {
"path": "C:\\msys64\\usr\\bin\\zsh.exe",
"args": ["--login", "-i"],
"env": {
"MSYSTEM": "MSYS",
"CHERE_INVOKING": "1"
}
}
},
"terminal.integrated.defaultProfile.windows": "zsh"
}

设置 shell

保存后,打开一个新的终端,默认就是 zsh 了。

思考

如果你安装过 git,你可能会发现 git bash 会自动添加到 VS Code 的终端里,这中间不知道做了什么操作,可能是 Windows 存在什么注册表来注册终端软件?(我猜的)如果在系统层面将 Msys 注册成终端软件,那这些 IDE 什么的应该会自动加上吧(我不到啊)。

其他问题

ln -s 会复制

MSYS2 使用 ln -s 创建软连接时,会复制文件。
解决这个问题,只需添加一个环境变量

1
export MSYS="winsymlinks:lnk"

你可以选择添加到 /etc/profile,或者在 /etc/profile.d 添加文件。添加后创建软链接,就会创建快捷方式了(还是有区别的)。