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

Windows10构建Linux Docker镜像ENTRYPOINT执行bash脚本报exec format错误

问题原因

你脚本十六进制转储开头的ef bb bf是UTF-8 BOM(字节序标记),这是Windows系统下编辑器保存UTF-8文件时默认添加的特殊前缀,Linux系统的程序加载器无法识别该标记:

  • 加载器解析shebang行时,会把BOM和#!/bin/bash作为一个整体当成解释器路径,系统中不存在这个带前缀的路径,所以会抛出找不到文件的提示。
  • 你手动用/bin/bash -c ./pulumi-go.sh调用时,bash会自行解析脚本内容,虽然会把带BOM的首行识别为非法语句抛出报错,但不影响后续行的执行,所以能正常输出Hello world。

解决方案

你只需要移除脚本的UTF-8 BOM即可解决exec format error报错,可任选以下一种方法操作:

  • 用编辑器修改:用VS Code、Notepad++等编辑器打开脚本,将编码从「UTF-8-BOM」改为「UTF-8」后重新保存即可。
  • 用Linux命令移除:在WSL或Git Bash中执行如下命令处理脚本:
sed -i '1s/^\xEF\xBB\xBF//' pulumi-go.sh
  • 在Dockerfile中自动处理:在COPY脚本后添加移除BOM的步骤,避免本地文件编码影响构建:
COPY ./MyProject ./
RUN sed -i '1s/^\xEF\xBB\xBF//' pulumi-go.sh
RUN chmod +x pulumi-go.sh

处理完成后重新构建镜像即可正常通过ENTRYPOINT启动脚本。

内容的提问来源于stack exchange,提问作者Dave New

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:12:01