当我们在linux 系统进行上传了一个编写的脚本时,例如:deploy.sh ,执行命令 ./deploy.sh 会出现如下错误:
[root@VM-16-12-centos serve]# ./deploy.sh
-bash: ./deploy.sh: /bin/bash^M: bad interpreter: No such file or directory
这个错误是因为在 Windows 系统中,.sh 文件的换行符是 CRLF(回车换行),而在 Linux 和 macOS 系统中,换行符是 LF(换行)。当你在 Windows 系统下运行一个 Linux 或 macOS 系统的脚本时,就会出现这个错误。要解决这个问题,你需要将脚本中的 CRLF 换行符转换为 LF 换行符。可以使用 dos2unix 工具来实现这个转换。
首先安装 dos2unix:
sudo apt-get install dos2unix
然后使用 dos2unix 命令转换脚本:
dos2unix deploy.sh
[root@VM-16-12-centos serve]# dos2unix deploy.sh
dos2unix: converting file deploy.sh to Unix format...
现在你应该可以正常运行 ./deploy.sh 了。