news 2026/8/21 18:45:36

执行 install.sh 报错 `env: ‘bash\r‘: No such file or directory` 怎么解决?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
执行 install.sh 报错 `env: ‘bash\r‘: No such file or directory` 怎么解决?

适用场景:
Docker / Jenkins / Linux 容器中执行.sh脚本失败
报错:env: ‘bash\r’: No such file or directory


一、问题现象(很多人都会遇到)

在 Docker 容器或 Jenkins 容器中,执行脚本:

chmod+x install.sh ./install.sh

结果报错:

env: ‘bash\r’: No such file or directory env: use -[v]S to pass options in shebang lines

看起来像是:

  • bash 不存在?
  • 权限不对?
  • Jenkins / Docker 有问题?

👉其实都不是。


二、根本原因(重点,一定要看)

✅ 真正原因:脚本是 Windows 换行符(CRLF)格式

Linux / Docker 使用的是:

  • LF(\n)换行

而 Windows 常见的是:

  • CRLF(\r\n)

当脚本第一行是:

#!/usr/bin/env bash\r

Linux 会把它理解成:

bash\r (一个不存在的命令)

于是就报了这个经典错误:

env: ‘bash\r’: No such file or directory

三、如何确认是不是这个问题(可选)

可以用下面命令查看隐藏字符:

sed-n'1l'install.sh

如果看到:

#!/usr/bin/env bash\r$

那就100% 确认是 CRLF 换行符问题


四、解决办法(3 种,任选一种)

✅ 方法 1(最推荐):使用sed转换格式

sed-i's/\r$//'install.sh

然后再执行:

./install.sh

✔ 通用
✔ 不依赖额外工具
✔ Docker / Jenkins 都适用


✅ 方法 2:使用dos2unix(如果系统有)

dos2unix install.sh ./install.sh

注意:不是所有容器里都有dos2unix


✅ 方法 3:直接用 bash 执行(临时方案)

bashinstall.sh

这种方式有时能绕过 shebang 问题,但不如前两种彻底


五、为什么很容易踩这个坑?

常见原因包括:

  • Windows 浏览器中下载.sh
  • 记事本 / VS Code(CRLF)打开并保存
  • 从 Windows 主机复制脚本到 Linux / Docker
  • Jenkins 容器里直接粘贴脚本

👉 这些都会自动把 LF 转成 CRLF


六、推荐的「正确下载脚本姿势」

✅ 方式 1:直接 curl + bash(官方常用)

curl-fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh|bash

✅ 方式 2:先下载,再处理换行符

curl-o install.sh https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.shsed-i's/\r$//'install.shbashinstall.sh

七、常见误区总结(新手必看)

错误操作原因
sudo ./install.shDocker 容器里通常没有 sudo
一直chmod +x权限不是根因
以为是 bash 没装实际是换行符问题
以为 Jenkins 有 bug和 Jenkins 无关

八、一句话总结(可以直接记住)

env: 'bash\r'报错 ≠ bash 不存在
而是脚本是 Windows 格式(CRLF),
sed -i 's/\r$//' 文件名即可解决。


九、写在最后(经验建议)

Linux / Docker / Jenkins环境中:

  • .sh脚本永远只用 LF
  • 不要用 Windows 记事本编辑
  • 下载脚本尽量用curl / wget
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 0:46:36

风浪中的海上吊装控制,如何又稳又准?

山东大学(威海)陈原教授团队近期在Information Sciences期刊发表题为Passivity-based variable damped sliding mode control for cable-driven wave motion compensation device under hybrid disturbances的论文,论文被SCI和EI收录。海上补…

作者头像 李华
网站建设 2026/8/21 5:24:02

75亿去买理财,反而是摩尔线程最“诚实”的一刻

当所有人都在嘲讽摩尔线程“75 亿不搞研发,跑去吃银行利息”的时候,我反而觉得,这可能是它目前为止做过的最良心、也最真实的一次选择。原因很简单——如果你真正看懂了 A 股过去 20 年的历史,就会明白,钱老老实实躺在…

作者头像 李华
网站建设 2026/8/22 0:13:00

感悟闲聊人生

1.在工作中 尽量使用自己能力范围内没做过的东西,提升自己的技能。 2.如果是自己的东西,怎么简单怎么来,重要的是第一版,但是不能因为求速度而降低质量,要确确实实满足了你某个功能点,解决了你某个需求。 3…

作者头像 李华
网站建设 2026/8/21 7:12:05

GeoServer 跨域问题解决方案

转载于博客园:【开发问题】GeoServer 跨域问题解决方案 一、进入 geoserver 目录下的 lib 文件夹,将其中的 jetty-servlets-9.4.57.v20241219.jar和jetty-util-9.4.57.v20241219.jar(版本不一定是9.4.57.v20241219,前缀一样就好&…

作者头像 李华
网站建设 2026/8/21 10:29:01

java实现自定义注解导出excel

结合 Spring AOP (面向切面编程) 和 Alibaba EasyExcel。 EasyExcel 是阿里巴巴开源的工具,相比 Apache POI,它极其节省内存(基于流式读写),并且对注解支持非常好。1. 引入依赖 (Maven) 在 pom.xml 中引入 EasyExcel 和…

作者头像 李华
网站建设 2026/8/21 22:00:36

上传文档生成PPT前必看:实测多款工具后的经验总结

年终总结难?AI办公工具来救场每到年终,职场人就开始为年终总结报告发愁。熬夜加班改报告是常有的事,好不容易搭好的框架,内容却混乱不堪,毫无逻辑。设计方面更是让人头大,缺乏灵感,做出来的报告…

作者头像 李华