-bash: ./restart.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

这是典型的Windows换行符(CRLF)导致的脚本不能在Linux/Unix环境下正常执行的问题。

Linux 期望的是 LF (\n),而 Windows 是 CRLF (\r\n),所以脚本文件的第一行解释器路径后多了一个不可见的 ^M(回车符),导致找不到解释器。


解决办法:

1. 使用 dos2unix 工具转换

如果你的服务器有安装 dos2unix,直接执行:

复制代码
dos2unix restart.sh

然后再执行脚本就没问题了。


2. 用 sed 命令转换
复制代码
sed -i 's/\r$//' restart.sh

3. 用 vim 手动转换
复制代码
vim restart.sh

进入 vim 后,输入命令:

复制代码
:set fileformat=unix 
:wq

4. 在Windows保存时指定Unix格式

如果你用的是 Windows 的文本编辑器(如 VSCode、Notepad++),保存文件时选中换行符格式为 LF (Unix),而不是 CRLF (Windows)。


解决后你就能正常执行脚本了。