news 2026/4/16 15:23:30

执行 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/4/13 4:27:08

silvaco学习记录(九)GaNdiode的瞬态正弦波信号仿真

最近在看微波注入信号的方面文章,发现常用的就是阶跃信号和正弦波信号,在atlas中阶跃信号可以很方便的直接加在电极上,但当我学习到正弦波信号的时候,耗费了很长时间,我起初在手册里看到了sin相关的语句,在…

作者头像 李华
网站建设 2026/4/16 11:05:06

基于SpringBoot的超能驾校线上学习管理系统的设计与实现(毕业设计项目源码+文档)

课题摘要在驾培行业数字化转型加速、传统驾校学习管理存在 “理论学习碎片化、练车预约低效、考核进度不透明、教学数据难统计” 的痛点背景下,基于 SpringBoot 的超能驾校线上学习管理系统构建具有重要的行业与用户价值:从学员层面,系统整合…

作者头像 李华
网站建设 2026/4/16 12:21:29

基于大数据的电子产品销售数据分析系统源码设计与文档

前言在电子产品市场竞争加剧、销售数据呈爆炸式增长的背景下,传统销售分析存在 “数据维度割裂、实时性差、预测精度低、决策支撑弱” 的痛点,难以满足企业精准洞察市场、优化产销策略的需求。基于大数据的电子产品销售数据分析系统构建具有重要的商业与…

作者头像 李华
网站建设 2026/4/15 4:54:24

基于python的柳州市租房数据可视化分析源码设计与文档

前言在柳州租房市场信息碎片化、用户选房决策难、从业者缺乏数据支撑的背景下,基于 Python 的柳州市租房数据可视化分析系统,能精准挖掘租房市场规律,解决 “数据维度单一、趋势洞察难、区域差异不直观” 的痛点,兼具用户选房参考…

作者头像 李华
网站建设 2026/4/14 6:19:16

基于Python的旅游攻略分享平台系统网站源码设计与文档

前言在旅游攻略分享碎片化、信息真伪难辨、用户个性化需求未被满足的背景下,基于 Python 的旅游攻略分享平台系统,能解决 “内容管理混乱、推荐精准度低、互动性不足” 的痛点,兼具用户创作分享与个性化攻略获取的核心价值。从技术架构层面&a…

作者头像 李华
网站建设 2026/4/16 11:05:48

LobeChat能否编写Dockerfile?运维自动化助手

LobeChat 与 Docker:构建现代化 AI 运维自动化实践 在今天,AI 不再只是算法工程师手中的工具。越来越多的团队希望将大语言模型快速集成到业务流程中——无论是客服系统、内部知识库,还是个人助手应用。但问题也随之而来:如何让这…

作者头像 李华