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

Shell脚本在Ubuntu正常运行,为何在Amazon Linux 2报'-c选项未识别'错误?

问题原因与解决方案

问题根源

你使用的GraalVM native-image镜像默认ENTRYPOINT是gu工具,而非bash。在Ubuntu环境中可能因Shell解析特性让命令被误打误撞正确处理,但在Amazon Linux 2的Shell环境下,Docker会将/bin/bash -c ...当作gu的参数传递,而gu并不识别-c选项,因此触发报错。

修复后的命令

显式通过--entrypoint指定启动bash,替换镜像默认的ENTRYPOINT,确保-c参数被bash正确接收:

docker run --rm --name graal --entrypoint /bin/bash -v $(pwd):/${PROJECT_NAME} ghcr.io/graalvm/native-image:ol8-java11-22.2.0 \
-c "gu install native-image; \
              native-image \
                -H:EnableURLProtocols=http \
                -H:ReflectionConfigurationFiles=/${PROJECT_NAME}/reflect.json \
                -jar /${PROJECT_NAME}/target/${PROJECT_NAME}-${PROJECT_VERSION}.jar \
                ; \
                mkdir /${PROJECT_NAME}/target/custom-runtime \
                ; \
                cp ${PROJECT_NAME}-${PROJECT_VERSION} /${PROJECT_NAME}/target/custom-runtime/${PROJECT_NAME}"

验证方式

你可以通过以下命令确认镜像的默认ENTRYPOINT:

docker inspect ghcr.io/graalvm/native-image:ol8-java11-22.2.0 | grep -A 10 Entrypoint

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:51:17