You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助:强制GNU Make使用指定Shell解决跨系统构建报错

解决Makefile报错:make: /usr/bin/sh: Command not found

这个问题是跨系统移植项目时很常见的Shell路径不匹配问题,下面给你几个实用的解决办法:

方法1:在Makefile中全局指定Shell路径(推荐)

直接在你的Makefile最顶部添加一行,强制Make使用当前系统的Shell可执行文件:

# 如果新系统环境固定,可直接写死路径
SHELL := /bin/sh

# 更通用的写法:自动获取当前系统的Shell路径,新旧系统都能兼容
SHELL := $(shell which sh)

如果你的Makefile脚本依赖bash的专属特性(比如数组、高级字符串处理),可以把sh换成bash:

SHELL := $(shell which bash)

方法2:执行make时临时指定Shell

如果不想修改Makefile,或者只是临时调试,可以在执行make命令时通过环境变量指定Shell路径:

make SHELL=/bin/sh

这种方式适合一次性的测试场景。

报错原因说明

Make工具默认会硬编码使用/usr/bin/sh作为执行Shell的路径,但你的新系统中Shell实际位于/bin/目录,且没有建立/usr/bin/sh到/bin/sh的软链接,导致Make找不到指定的Shell可执行文件,从而触发了这个报错。

内容的提问来源于stack exchange,提问作者Mr.Weathers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:53:59