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

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

相关推荐
Ada's19 小时前
【计算机基础系列】003:Python数据结构
开发语言·数据结构·python
2601_9628857220 小时前
如何用 Python 计算 TRIX 三重指数平滑均线指标?
开发语言·python
还卿一钵无情泪20 小时前
Unsloth 微调 构建自己的大模型 没有GPU也能微调
linux·开发语言·人工智能·python·大模型·nlp·unsloth
高山有多高20 小时前
【Linux笔记】IO模型
linux
不会就选b21 小时前
Linux之TCP理论<1>
linux·运维·服务器
小π军21 小时前
操作系统面试题
java·linux·服务器
倔强的石头1061 天前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言
传人once1 天前
页面中心圆圈放大效果如何写
开发语言·javascript·ecmascript
NeilYuen1 天前
【C++】STL源码仿写(二):vector
开发语言·c++
Lsetea1 天前
curl用IP测试HTTPS报证书不匹配:--resolve与Host头别混用
linux·https·ssl证书·openssl·curl