我在 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 用服务器开发.)


欢迎大家交流讨论自己的做法~
6675 次点击
所在节点    程序员
39 条回复
tool2d
2023-03-11 14:38:26 +08:00
我也是用 MinGW ,ls 那些命令基本上都能用。

也不是真的需要 linux 内核,只要一些常用终端软件,能正常编译和运行就可以了。
lisxour
2023-03-11 16:55:10 +08:00
@lyc8503 圈子不同吧,我一直都在用 WSL 做 linux 下的编译,但没做日常使用
laqow
2023-03-11 20:22:19 +08:00
MinGW 能编译的就是纯 windows 应用了,对 linux 特性依赖基本没有的那些。有些没针对 windows 优化的部分就算能编译也比 linux 环境下性能低很多。比较担心 Msys2 里面 symlink 、pipe 或路径转码反斜杠转换之类的有 bug 直接把重要文件冲了,重要事情还是在虚拟机里面跑独立 linux 做。
creanme
2023-03-11 20:42:25 +08:00
不就为了用那些命令吗,推荐 terminal + nushell
AnroZ
2023-03-11 20:51:16 +08:00
用 SWL+ubuntu 子系统已经很多年了
xinleibird
2023-03-11 20:59:55 +08:00
MinGW 还可以开 X server 呢……自己玩当然好玩,拿来做开发环境也凑活,可是太折腾了。真是奉旨摸鱼摸这种东西、摸编辑器是最好玩的吧,否则就算了吧。
lscho
2023-03-11 21:05:15 +08:00
所以我选择 macOS
coolair
2023-03-11 21:07:41 +08:00
winget + PowerShell ,好用的不得了。winget 提交源 PL 很快就通过。PS 在 Win 下真的是无敌,觉得不好用的,是因为你不会用。很多人可能专门看了 bash 之类的编程书,确少有人针对 PS 学习过,毕竟应用范围不及 shell ,但是看完文档后,会发现真是强大,而且 win 的文档真心完善。
tairan2006
2023-03-12 00:19:30 +08:00
WSL 最重要的是有个 Linux 环境…写 C/C++或者用其他语言调用 C 库的时候,没这个环境调试很麻烦。
chenzhongxiang
2023-03-12 00:33:52 +08:00
c/c++开发,需要跨 win 和 linux 封装抽象层,clion 跑在 win 上。写好 cmake 配置后 clion 里切换配置自动在 win 和 wsl linux 环境里切换简直不要太方便。以前都是写完一大段然后推到 git 再 pull 下来,如果发现抽象层不合适还要重新两边都改再推 git ,现在点一下换个配置立即换了环境。丝滑~~
hxy100
2023-03-12 02:09:26 +08:00
蹲个点,因为我跟楼主的使用习惯一样。
binghe
2023-03-12 05:05:49 +08:00
scoop install 怎么更改安装位置
现在默认是装在用户目录下的,我想改到 D 盘或者 E 盘的自定义目录下可以吗?
zed1018
2023-03-12 08:24:05 +08:00
不做 python 不太清楚怎么弄,我是写 kotlin/spring-boot 的,我是全部都在 wsl2 里。
我的方案是项目、gradle 、jdk 全在 wsl2 ,intelliJ 能直接从 wsl2 里读到 sdkman 装的 jdk 。IO 除了 IDE 的 index 基本不走 9pfs 。如果觉得 indexing 太慢现在 GW 也支持 WSL2 ,不过主要问题是不能共享插件和设置同步,一个项目单独的一套 backend 。
likeunix
2023-03-12 08:44:58 +08:00
为了用 WSL2 ,我在系统服务里把 虚拟机平台 打开,但是感觉 VMware 里的虚拟机有点卡,不知道会不会降低本地软件的性能
ZKHan
2023-03-12 09:24:02 +08:00
@binghe 安装前在环境变量里设置 SCOOP 或 SCOOP_Global
WIN233
2023-03-12 09:46:52 +08:00
@coolair 命令混合大小写,很头疼,即便是有一些缩写,还是用着感觉不舒服
agagega
2023-03-12 15:21:18 +08:00
我用 Windows 的时候也喜欢像 OP 这样,其实大多数时候虽然不方便但也能满足需求。以前人们比较 Windows 和 macOS 的命令行就是在这个层面上的。WSL 跟它们其实不是一个层面的东西,没有那种同属于一个系统的感觉。

不过有个问题是,不知道怎么把 VS Prompt 和 Git Bash 结合起来,也许直接把那堆工具链加到 Bash 的 PATH 里就行了?
Slurp
2023-03-12 21:59:31 +08:00
吹 PowerShell 的就算了,启动两三秒,语法一脉相承的没有审美……
bigtear
2023-03-12 22:52:03 +08:00
可以试试 Nushell ,一个 Rust 写的 Shell ,设计理念和 Powershell 类似,但是速度比 Powershell 快得多,原生跨平台。

目前在用 Windows Terminal + Nushell + Git bash 工具链,非常好用。偶尔需要 Linux 环境就用 WSL1 + Alpine Linux ,很舒服。

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

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

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

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

© 2021 V2EX