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

Ubuntu Docker容器内执行cd等命令报错找不到文件或目录如何解决

问题原因

报错信息中的\r是Windows操作系统特有的回车字符,Windows默认使用\r\n作为换行符,而Linux/Unix系统仅使用\n作为换行符。该报错的核心原因是你输入的路径/命令末尾被额外附加了\r字符,被Linux系统识别为文件名的一部分,因此无法匹配到对应路径,通常有两种触发场景:

  • 启动容器时仅使用了-i(交互式)参数,未添加-t(分配伪终端)参数,导致宿主机的终端换行符没有被正确转换,输入的命令末尾自动携带了\r字符
  • 执行的命令/脚本是在Windows环境下编写保存的,默认携带了Windows格式的换行符,放到Linux容器内运行时无法被正确解析
解决方法

容器启动参数问题

重新启动容器,添加-t参数分配伪终端,自动完成换行符转换即可:

docker container run -it ubuntu

如果需要保留原有容器,也可以临时清理命令中的回车字符后执行,例如执行cd命令时可写作:

cd $(echo bin | tr -d '\r')

命令/脚本存在Windows换行符

如果是本地编写的脚本传入容器执行,可以在宿主机提前转换换行符:

  • Windows环境可以用Notepad++打开文件,选择「编辑-文档格式转换-转换为Unix(LF)」后保存
  • Linux/macOS环境可以直接用dos2unix工具转换:
    dos2unix 你的脚本文件名.sh
    

如果已经进入容器,可以先安装dos2unix工具后再转换文件格式:

apt update && apt install -y dos2unix
dos2unix 你的脚本文件名.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:24:01