news 2026/6/9 11:46:08

执行 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/6/5 17:15:00

管理案例丨华恒智信助力某大型钢铁集团人力资源管理咨询服务项目——以系统性诊断与双维考核,驱动效率与效能双重提升

【客户类型】生产制造行业、钢铁冶金行业、重型制造业、跨行业多元化集团 【问题类型】组织绩效考核体系重建、跨部门协同机制优化、业绩与管理平衡发展、人力资源管理、企业管理一、项目背景:领军企业的绩效管理之困该集团公司是一家立足山西、辐射全国的行业巨头&…

作者头像 李华
网站建设 2026/6/9 0:28:06

基于SpringBoot的车辆报废回收系统(毕业设计项目源码+文档)

课题摘要 在机动车报废回收行业规范化、数字化升级的背景下,传统车辆报废回收模式存在 “流程审批繁琐、车辆溯源难、数据统计滞后、监管透明度低” 的痛点,难以满足车主便捷报废、企业高效运营、监管部门精准管控的需求。基于 SpringBoot 的车辆报废回收…

作者头像 李华
网站建设 2026/6/9 5:44:42

租用日本服务器价格便宜的原因

在 2026 年的海外服务器租赁市场中,日本服务器呈现出 “高配置 低门槛” 的独特优势,更关键的是,低价并未牺牲核心品质 ——90% 以上服务商提供 NTT/KDDI 原生 IP、CN2 GIA 直连线路,稳定性与纯净度远超同价位其他地区服务器。这…

作者头像 李华
网站建设 2026/6/9 2:02:13

数据结构:广义表

广义表 资料:https://pan.quark.cn/s/43d906ddfa1b、https://pan.quark.cn/s/90ad8fba8347、https://pan.quark.cn/s/d9d72152d3cf 一、广义表的定义 广义表(Generalized List)是线性表的扩展,是由零个或多个原子(Atom…

作者头像 李华