Windows下不修改Makefile如何设置默认Shell?
解决Makefile默认使用cmd.exe的方法
针对PATH中存在sh.exe导致Makefile默认调用它、忽略环境变量设置的问题,给你几个实用方案:
1. 全局设置系统环境变量(一劳永逸)
直接在Windows系统中配置SHELL环境变量,指定cmd.exe的完整路径:
- 打开「此电脑」属性 → 高级系统设置 → 环境变量
- 在「用户变量」或「系统变量」里新建变量:
- 变量名:
SHELL - 变量值:
C:\Windows\System32\cmd.exe(根据你的系统实际路径调整,确保路径正确)
设置后所有Makefile默认都会调用cmd.exe,只有当某个Makefile内部显式定义SHELL := 其他Shell路径时,才会改用指定的Shell。
- 变量名:
2. 配置Make工具的全局初始化文件
如果你用的是GNU Make,可以通过初始化文件设置默认Shell:
- 在你的用户目录(比如
C:\Users\你的用户名)下创建.makerc文件 - 在文件里添加一行:
SHELL := cmd
每次启动Make时会自动加载这个配置,默认使用cmd.exe,单个Makefile里的SHELL定义会覆盖这个全局设置。
3. 用通用配置文件统一管理多个Makefile
如果有多个Makefile需要统一设置,可以创建一个通用配置文件:
- 新建
common.mk文件,写入:SHELL := cmd - 在每个需要默认用cmd的Makefile开头添加:
include common.mk
后续如果某个Makefile需要改用其他Shell,只要在该文件里重新定义SHELL即可,比如SHELL := /bin/sh(如果是WSL环境的sh)。
内容的提问来源于stack exchange,提问作者Sun of A beach
相关产品推荐
相关产品推荐

