本地写的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 文件,其中行尾符已经被转换,然后给予执行权限并执行。

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

相关推荐
好好风格13 分钟前
宝塔面板 HTTPS 端口证书不生效排查记录
linux·运维·nginx
Xin_ye100861 小时前
C# 零基础到精通教程 - 第十八章:部署与发布——让应用上线
开发语言·c#
用户2367829801681 小时前
Linux pgrep 命令详解:按名称查找进程 PID 的高效方法
linux
zzipeng1 小时前
Linux LCD驱动
linux·运维·服务器
思麟呀1 小时前
C++11并发编程:call_once一次性执行+atomic原子类型+CAS无锁编程+自旋锁
linux·开发语言·jvm·c++·windows
浮生若城1 小时前
Linux库制作与原理(2):理解链接与加载
linux·运维·服务器
Cat_Rocky1 小时前
Gitlab安装与配置
linux·运维·gitlab
码不停蹄的玄黓2 小时前
Java 生产者-消费者模型详解
java·开发语言·python
爱讲故事的2 小时前
操作系统第一讲复习:为什么学习操作系统,以及操作系统到底在做什么?
linux·开发语言·windows·学习·ubuntu·c#
荒--2 小时前
kali安装与下载、设置(2026)
linux·服务器