文
章
目
录
章
目
录
最近在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脚本报错。
解决方法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报错的问题,如还有疑问可以留言讨论。