我在 Windows 下不用 WSL 而使用 MinGW + scoop 的一些理由

2023-03-11 01:18:42 +08:00
 lyc8503
主力机是笔记本, 因为 Windows 下 OEM 优化更好 + 个人习惯的问题还在使用 Windows 开发.
但 Windows 下 powershell / cmd 的 cli 体验真的是一言难尽... Linux 下的一套命令行工具就很好用.


目前我使用的方法是先安装 scoop 进行包管理, Windows 下 GUI 和 CLI 的包都可以使用 scoop 管理
然后使用 scoop 安装 git, 会自带 git bash (直接安装 msys2 也行), 就是精简的 MinGW

然后再从 Microsoft Store 装一个 Windows Terminal 并设置 MinGW 作为默认终端, 这样的话就可以在 Terminal 里使用常见的 Linux 命令行工具了, 如果缺什么工具大概率也可以使用 scoop install 安装.


我觉得这套设置对比 WSL 的优势是大部分应用都是移植到原生的 win32 应用, 能和主机共享一套环境. (比如我 IDE 里调用的 python, powershell 里的 python 和 MinGW 里的 python 都是同一个, 版本和包都是一致的.)

虽然 WSL1/2 对 Linux 的模拟更加完整, 但 WSL1 文件访问和其他系统调用性能差, WSL2 占用内存+访问 Windows 文件是网络文件系统, 兼容性不好且性能更差. 感觉不如直接使用直接移植到 windows 的这些命令行工具.

(当开发一些依赖 linux kernel 的 C/C++ 程序的时候我会使用 CLion 的 Remote SSH 用服务器开发.)


欢迎大家交流讨论自己的做法~
6600 次点击
所在节点    程序员
39 条回复
sunrisewestern
2023-03-11 01:46:16 +08:00
你这个本质是在 windows 在使用类 linux 的命令行指令去做代替 cmd 或者 powershell 的指令,而 wsl 是给想在 windows GUI 下用 linux 系统的人用的,还是不一样的
thedrwu
2023-03-11 04:01:00 +08:00
2000-2010 那会儿 mingw 纯原生和 msys 的前身(叫什么忘了)互相交互的时候会把命令行参数里的 /转译成\ 于是脚本常常遇到意想不到的 bug ,不知道现在改了没。
只能选择 cygwin 或者手动 sfu
ysc3839
2023-03-11 05:53:37 +08:00
我选择 MSYS2+zsh
jin7
2023-03-11 08:19:41 +08:00
powershell 也是有学习成本的
Aaron01
2023-03-11 08:54:03 +08:00
我也觉得这样比 wsl 好用点
oneisall8955
2023-03-11 09:30:57 +08:00
一直这样用,买了云主机,再也没有折腾过 wsl
mrpzx001
2023-03-11 09:34:48 +08:00
wsl2+docker+remote development
yaott2020
2023-03-11 09:38:26 +08:00
我倒是觉得 wsl2 更好,wsl2 提供几乎原生的 Linux 环境,而且相对可以隔离主机文件,不需要也可以直接删。虽然资源占用大了一点,但还是可以接受的。
ericguo
2023-03-11 09:38:52 +08:00
真的喜欢原生命令行还不如直接换 Linux/Mac ,不差钱换 Mac 比较好,桌面端软件全。
zxCoder
2023-03-11 10:19:23 +08:00
优势是大部分应用都是移植到原生的 win32 应用, 能和主机共享一套环境. (比如我 IDE 里调用的 python, powershell 里的 python 和 MinGW 里的 python 都是同一个, 版本和包都是一致的.)

这个优势我咋没感觉出来,那用 WSL 的话,IDE 里调用的 python 是 WSL 的 python ,命令行里调用的也是 WSL 的 python ,有啥不同的吗
janus77
2023-03-11 10:20:13 +08:00
所以你用的还是 win ,只是命令行相关的操作进行了加强而已。而很多人是为了用 linux 。本质不一样的
missdeer
2023-03-11 10:44:27 +08:00
直接用 msys2 就行了,pacman 包管理
coyove
2023-03-11 10:56:32 +08:00
现在日常工作用 msys2 ,优点就是方便,把根目录打包就可以带走。基本的工具链 pacman 也都有(平常主要是 pythongo ,c++),基本的代码编辑完全可以胜任,gopls ,clangd 都是开箱即用,正儿八经的编译大概率会出问题,但因为服务端的工作性质,本地编译基本可以忽略。
cc666
2023-03-11 10:58:45 +08:00
需求不同,你这不是 WSL2 欲解决的主要需求
coyove
2023-03-11 11:00:29 +08:00
现在日常工作用 msys2 ,优点就是方便,把根目录打包就可以带走。基本的工具链 pacman 也都有(工作主要是 vim + py/go/c++),代码 IDE 完全可以胜任,gopls ,clangd 都是开箱即用,正儿八经的 c++编译大概率会出问题,搜 hack 能解决一部分,但因为服务端的工作性质,本地编译基本可以忽略,倒是没有太多影响。
duke807
2023-03-11 11:02:15 +08:00
一直在笔记本上用 linux/gentoo 路过
qq565425677
2023-03-11 11:12:27 +08:00
按 op 的需求确实没有必要装 wsl ,不过 wsl 主要是用来提供 linux 的系统环境,而不是提供一个 shell
lyc8503
2023-03-11 11:20:04 +08:00
@sunrisewestern @janus77 @cc666 确实可能我的需求可能不需要 WSL, 不过感觉身边很多人都是装了 WSL 只是为了 Linux 下的终端体验, WSL 太大了不一定适合所有人, 所以提这个帖子讨论一下.

@zxCoder 这样配置的话遇到系统调用(特别是文件 io)密集的程序是有比较明显的性能损失的, 无论是 WSL1 还是 WSL2, 只有 WSL2 下把文件全放在 Linux 下才能达到接近原生的性能, 但这样 Windows 访问其中的文件又是通过网络文件系统了, 速度慢且容易出现兼容性问题.

@duke807 笔记本用 Linux 有不少小毛病, 比如耗电快+容易睡死+GUI 不那么流畅, 个人也习惯 Win 了就一直用着了.
HENQIGUAI
2023-03-11 11:21:20 +08:00
Windows 下一直感觉 Powershell + .Net 可以吊打 Linux 下的 shell 脚本,不过可能大多数时候没那么轻巧好用。
ShadowPower
2023-03-11 12:50:44 +08:00
我用 WSL 不是为了那些命令,只是为了运行真正的 ELF 可执行文件,然后还要用 Linux 的 syscall 。不少原本只适配 Linux 的方案现在都可以轻松跑起来。
之前做一些项目特别依赖平台相关的特性,例如监视文件和文件属性变化。这种东西在 Mac 上都会有差异,监视文件变化的地方不一样。一些跨平台库虽然接口统一了,但行为还是有一些区别,导致不同的平台上代码可能会多执行或者少执行。

以前直接用 Linux 桌面来做开发,桌面谈不上好用,只能凑合用,小毛病挺多的。像投屏到会议平板之类的还全是问题,根本不能用。有了 WSL 之后,几乎同时满足办公协作和开发的需求。我也用过虚拟机和 vagrant 之类的东西搭环境,便利程度不及 WSL 。

用 msys2 那套的话,我曾经遇到过 sed 的行为不一样的问题,已经太久远了,细节忘了……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/923053

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX