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

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

相关推荐
深邃-2 分钟前
数据结构-双向链表
c语言·开发语言·数据结构·c++·算法·链表·html5
2401_878530213 分钟前
分布式任务调度系统
开发语言·c++·算法
愤豆4 分钟前
06-Java语言核心-JVM原理-JVM内存区域详解
java·开发语言·jvm
wzhidev4 分钟前
04、Python核心数据类型详解:从一段诡异的调试说起
开发语言·python
luanma1509805 分钟前
Laravel 7.X核心特性深度解析
android·开发语言·php·lua·laravel
wzhidev6 分钟前
05、Python流程控制与函数定义:从调试现场到工程实践
linux·网络·python
@haihi9 分钟前
ESP32 MQTT示例解析
开发语言·网络·mqtt·github·esp32
艾莉丝努力练剑10 分钟前
【Linux:文件】文件基础IO进阶
linux·运维·服务器·c语言·网络·c++·centos
艾莉丝努力练剑16 分钟前
【MYSQL】MYSQL学习的一大重点:表的约束
linux·运维·服务器·开发语言·数据库·学习·mysql
程序猿编码21 分钟前
基于ncurses的TCP连接可视化与重置工具:原理与实现(C/C++代码实现)
linux·c语言·网络·c++·tcp/ip