在Linux系统执行脚本命令时 报错:/bin/bash^M: 坏的解释器: 文本文件忙
看到很多小伙伴在linux环境下(搭建redis集群)时执行脚本命令都遇到了这个错误
Docker搭建redis集群(三主三从)【图文详解】_hah杨大仙的博客-CSDN博客
查阅了一些资料,特在此汇总了前辈们的经验,望大家知悉来龙去脉。
问题所在:
- Linux下编写shell脚本,赋予权限即可直接运行。
- Windows下编写,编写完毕后传到服务器上执行,有时候会出现坏的解释器,如上图所示错误。
问题原因:
Windows系统下换行符为 \r\n,linux下换行符为 \n,因此在windows下编写的文件会比linux下多一个回车符号 \r。
解决方案:
| 去掉多余的 \r 回车符 即可。操作办法可以用sed命令进行全局替换
sed 's/\r//' -i redis.sh
|| 使用 vim 设置脚本文件格式
1.首先查看文件格式(底行模式下输入 :set ff)
:set ff
2.可以看到文件格式为dos
3.修改文件格式为 unix
底行模式下输入
:set ff=unix
再次查看,修改成功
接下来便可以愉快地执行脚本命令啦!!
..
若对vim命令还不太熟悉的可戳
Linux系统中 vi/vim编辑器 的介绍及使用大全 详解【一看就懂】_hah杨大仙的博客-CSDN博客_linux vi编辑器
..
Thanks
..