在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory

在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。

场景

我在window上创建了一个脚本直接复制到linux上,
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。

分析原因

这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。

解决方法

  • 1、最简单粗暴的方式
1
直接删掉,vim重新创建一个内容粘贴过去
  • 2、在windows下转换:
1
2
3
利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。
转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。
如果是 Notepad++ 则是在: 编辑 -> EOL Conversion -> 转换为 UNIX 格式 中。
  • 3、也可在Linux中转换:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
首先要确保文件有可执行权限 
#sh>chmod a+x filename

然后修改文件格式
#sh>vi filename

利用如下命令查看文件格式
:set ff 或 :set fileformat

可以看到如下信息
fileformat=dos 或 fileformat=unix

利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix

:wq (存盘退出)

最后再执行文件
#sh>./filename

参考链接:
https://www.cnblogs.com/ghj1976/archive/2010/10/12/1848830.html

-------------已经触及底线 感谢您的阅读-------------

本文标题:在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory

文章作者:趙小傑~~

发布时间:2019年07月11日 - 10:57:35

最后更新:2019年07月26日 - 23:32:12

原始链接:https://cnsyear.com/posts/5810fb82.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%