Linux - /bin/sh^M: bad interpreter: No such file or directory

本文介绍了一种常见的Shell脚本在Windows与Linux间移植时遇到的换行符问题,即/bin/sh^M:badinterpreter:Nosuchfileordirectory错误。文章详细解释了错误产生的原因,即不同操作系统中换行符的差异,并提供了使用vi/vim编辑器修改文件格式的具体步骤,以确保脚本能在目标平台上正确运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

在Windows环境下用Notepad++写了个shell脚本,上传到Linux平台后运行报错如下:

/bin/sh^M: bad interpreter: No such file or directory

经过查阅资料才知道,这是由于文件格式的问题:使用vi/vim进入该shell文件,按下:进入末行模式,输入set ff查询文件格式,结果如下:

fileformat=dos

这个问题是由于不同的操作系统使用了不同的符号来换行导致的,可以简单参考下下面的表格:

系统换行符
DOSCR/LF
UNIXLF
MACCR

如果通过Windows下的Git将文件提交到Linux上的服务器,也会收到换行符将被替换的消息通知。

解决方案

通过vi/vim进入想要修改的文件,按下:进入末行模式,输入set fileformat=unix,接着按下ZZ或者按下shift + z + z或者输入:x或者:wq保存修改即可。

参考链接

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值