本地写的Bash脚本,Linux端运行报错:/bin/bash^M: bad interpreter: No such file or directory

背景

在本地写了个Bash Shell脚本,但上传到Linux端后加完权限执行时报错:

(脚本名:script.sh)

-bash: ./script.sh: /bin/bash^M: bad interpreter: No such file or directory

分析

这个错误通常是由于脚本文件的行尾符格式不正确引起的。(大概率,解决了相应可能性后成功

Windows 系统使用的行尾符是 CRLF(```\r\n),而在 Unix/Linux 系统上使用的是 LF(\\n```)。

解决

① dos2unix 工具

可以使用 dos2unix 工具将脚本的行尾符转换为 Unix 格式。在终端中执行以下命令:

dos2unix script.sh

这将删除行尾的 \r,确保脚本在 Unix/Linux 系统上正确运行。

② tr 命令 (亲测有效)

如果没有安装 dos2unix,可以尝试使用 tr 命令:

tr -d '\r' < script.sh > script_unix.sh

chmod +x script_unix.sh

./script_unix.sh

这将创建一个新的 script_unix.sh 文件,其中行尾符已经被转换,然后给予执行权限并执行。

神奇之处在于:对比两个文件内容,完全一致(这里没想通,也不太清楚原因,如果有大神看见了这篇文章,请不吝赐教!我也会随时更正本文有出入的猜想~)

相关推荐
初心未改HD26 分钟前
DSH Skill开发实战:SKILL.md是给LLM看的操作手册,不是给人看的README,踩了4个坑
java·大数据·开发语言
Wang's Blog44 分钟前
Java 项目实战: 交友项目 - SpringData-Mongo 环境搭建和 CRUD
java·开发语言·交友
Lsetea1 小时前
curl下载HTTPS文件报23:证书验证成功与本地写入失败分层排查
linux·https·shell·ssl证书·curl
云计算练习生1 小时前
什么是文件权限?Linux 中 rwx 与数字权限的对应关系
linux·运维·服务器·操作系统·文件权限管理
叼烟扛炮1 小时前
Linux 学习笔记(十三):高效排错利器——GDB 调试器入门
linux·笔记·学习
凯瑟琳.奥古斯特1 小时前
动态调优IoU提升OCR文本合并精度
开发语言·python·算法
陌陌龙1 小时前
【紧急预警!PHP 核弹级漏洞 php2shell】
开发语言·php
饿了吃洗衣凝珠1 小时前
red hat day2
linux·运维·服务器
白露与泡影1 小时前
一线 Java 后端面试八股(2026 更新版,含完整答案)
java·开发语言·面试
企业解惑小能手-域智盾系统1 小时前
内网监控软件策略不生效、日志缺失?一套从现象到根因的排查框架
开发语言·php·域智盾