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

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

相关推荐
Full Stack Developme3 分钟前
Linux CURL 教程
linux·运维·chrome
小何code7 分钟前
【Python零基础入门】第4篇:Python变量与数据类型详解
开发语言·python
xiaoshuaishuai817 分钟前
C# 数字资源分发
开发语言·c#
techdashen17 分钟前
用自家产品构建自家产品:Cloudflare Images 的工程架构解析
开发语言·架构·rust
Lumos_77721 分钟前
Linux -- 共享内存
java·linux·运维
李日灐22 分钟前
<5> Linux 开发工具:包管理 + Vim 实操 + GCC 编译流程 + 静态与动态链接详解
linux·运维·服务器·面试·vim·gcc
笑不语24 分钟前
从共病网络到可解释 AI:同济医院 10 分 SCI 全流程复现(R 语言)
开发语言·人工智能·r语言
我也不曾来过126 分钟前
传输层协议UDP和TCP
linux·网络·udp
yu859395826 分钟前
利用MATLAB进行木材图像去噪
开发语言·算法·matlab
molihuan27 分钟前
最新VMware Ubuntu 1分钟极速安装 植物人教程
linux·ubuntu