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

Docker run -e传递环境变量未按预期生效问题排查

问题原因

核心问题在于shell变量的展开时机:

  • 你输入的$ONE会被本地终端的shell优先解析,而非容器内部的shell。如果本地shell中未定义ONE环境变量,$ONE会被展开为空字符串。
  • 最终Docker实际执行的命令是docker run --rm -e ONE='1' alpine echo,容器内的echo命令没有收到参数,因此不会输出预期的"1"。
解决方法

要让变量在容器内部的shell中被解析,常用两种方式:

  1. 用sh -c启动容器内的shell,并用单引号包裹命令,避免本地shell解析变量:
    docker run --rm -e ONE='1' alpine sh -c 'echo $ONE'
    
  2. 转义$符号,阻止本地shell展开变量(建议搭配sh -c使用,确保容器内shell处理变量):
    docker run --rm -e ONE='1' alpine sh -c "echo \$ONE"
    

内容的提问来源于stack exchange,提问作者Chris G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:48:08