最近在Liunx系统执行在windows上编写的shell脚本时提示执行失败,具体提示如下:
-bash: ./install-server.sh: /bin/bash^M: bad interpreter: No such file or directory
遇到这类问题,解决方案也很简单,下面潘老师来说下该如何去解决。
问题原因
在DOS/Windows里,文本文件的换行符为\r\n,而在Linux系统里则为\n,所以DOS/Windows里编辑过的文本文件到了Linux里,每一行都多了个^M,从而导致运行shell脚本报错。

程序员导航
优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站
解决方法1:windows本地解决
从问题的根源解决就是在windows上编写shell脚本时,比如潘老师这里时使用Notepad++进行编辑的,需要对shell脚本文件设置如下:
1)设置编码为无BOM的UTF-8格式

2)设置右下角系统类型为Unix

这样操作之后保存就解决了。
解决方法2:Linux系统上解决
1)编辑重设编码
编辑文件,然后使用set指令设置系统格式为unix
# 编辑 vi xxx.sh #esc退出执行 :set ff=unix #再esc保存退出 :wq
一般这样操作过后就解决了,如果还不能解决就尝试下下面这个方法:
2)替换^M
#替换\r字符 sed -i 's/\r$//' xxx.sh #如果有^M字符 sed -i 's/^M//g' xxx.sh
以上几种方法,基本就能解决Linux系统执行shell脚本提示^M报错的问题,如还有疑问可以留言讨论。

AI 工具导航
优网导航旗下AI工具导航,精选全球千款优质 AI 工具集
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...



