-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)。
解决后你就能正常执行脚本了。