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

Docker CMD命令中波浪号(~)展开失效问题咨询

Docker中CMD数组形式下波浪号(~)无法展开的原因

这不是Docker的Bug,是你没注意到exec格式CMD的特性:

  • 用CMD ["tail", "-f", "~/block.txt"]这种数组(exec)格式时,Docker会直接启动tail进程,完全不经过shell处理。而波浪号~的路径展开是shell(比如bash、sh)的专属功能,命令本身不认识~是什么,所以tail会把~/block.txt当成一个普通文件名去找,自然找不到对应的文件。
  • 换成绝对路径/home/lodgepole/block.txt后,命令直接拿到完整的有效路径,能正确定位文件,所以正常运行。

如果想保留波浪号的写法,有两个办法:

  1. 用shell格式的CMD:CMD tail -f ~/block.txt,Docker会自动用/bin/sh -c包裹这条命令执行,shell会帮你把~展开成用户主目录。
  2. 在数组形式里显式调用shell:CMD ["/bin/sh", "-c", "tail -f ~/block.txt"],同样借助shell完成波浪号的路径展开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:40:38