hl10502的博客

CentOS7.2执行sh脚本出错 /usr/bin/expect^M: bad interpreter: No such file or directory

在CentOS7.2上执行CeTune/deploy/prepare-scripts/configure_autossh.sh脚本出错,错误信息如下

1
2
[root@node210 prepare-scripts]# ./configure_autossh.sh 127.0.0.1 root123
-bash: ./configure_autossh.sh: /usr/bin/expect^M: bad interpreter: No such file or directory

分析

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

解决方法

在Linux中转换

首先要确保文件有可执行权限

1
[root@node210 prepare-scripts]# chmod a+x configure_autossh.sh

然后修改文件格式

1
[root@node210 prepare-scripts]# vi configure_autossh.sh

利用如下命令查看文件格式

1
:set ff 或 :set fileformat

可以看到 fileformat=dos 或 fileformat=unix
利用如下命令修改文件格式

1
2
:set ff=unix 或 :set fileformat=unix
:wq (存盘退出)

最后再执行文件

1
[root@node210 prepare-scripts]# ./configure_autossh.sh 127.0.0.1 root123

在windows下转换

利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换成UNIX,再上传到Linux。