可以默认用 WSL 。
嫌弃虚拟机麻烦(比如 IP 地址莫名其妙啦……),就 WSL1 ( WSL2 本质就是个 HyperV 虚拟机实例),虽然有些限制,大多数还算能用。
例外情形:
若你需要开发 Linux 内核模块本机调试之类,那当然没办法;
用 fuse 之类也可能比较麻烦;
偶尔会有些系统调用实现残缺不可用;
不要指望 systemd 之类的东西完整可用(同等层次上依赖系统实现细节的还有 nix 等);
GUI 多少比原生 Win32 麻烦且可能有无解的细节问题(例如输入法之类),性能可能也不咋地( WSLg 需要 Win11+WSL2 ),但 VcXsrv 跑个别应用基本上够用;
其它情况下,和原生 Linux 的差异是否能被容忍,取决于你自身对环境的理解(觉得不保险嫌弃麻烦那还是虚拟机了)。
如果要更原生的体验,用 MSYS2+MinGW 。
警告(相对 WSL ):原生 Win32 的构建性能会普遍降低;
小文件 I/O 性能会极其感人;
即便排除 I/O 问题,也不要指望 node.js 之类的运行时的表现不会明显变差;
同时,可能处理一些表面上容易遗漏,实际 Win32 特有的屑问题,大多是关于文件系统的:
Win32 的默认机制导致打开程序不能删除,这有时候很欠揍;
默认创建符号链接可能需要管理员权限,需要组策略变通;
Win32 不支持无视 AUX 这样的 DOS 保留文件名(但 MSYS 的工具能提供一些变通);
可能必须需要 fsutil 单独设置大小写兼容。
如果你要继续完全原生地使用 Win32 ,那么基本不会有更好的体验(以上 WSL 解决了的 Win32 问题会继续存在),并且有些问题是无解的。
@
cmdOptionKana 这篇文章有些是很扯蛋的,或者至少是过时了(即便考虑原文时间无视 WSL )。
像工具方面:
很多都是 Win32 自己残废,而不是命令行;
Win32 的残废如果不是需要自己积极变通,是可以改用现有工具在 Windows 上的移植而无视的;
如 git 的不好用,大多是因为 git 自身而不是 Windows 上的实现(除了一些 I/O 性能问题)。
在如,第五点几乎全是在 FUD ,不知道是在黑 Windows 还是黑 Linux 。