0%

Linux 上运行脚本报错 bad interpreter:No such file or directory

最近在用 Docker 部署一个项目,但是某几个镜像怎么都启动不起来。之后查看控制台打印的日志,发现了如下日志:

_1.sh 我明明已经通过 volumes 将其映射到 Linux 服务器上了,怎么会报这个错误呢?

之后搜了 N 多的博客,都没找到解决办法。之后找到了一个运行成功的镜像,将 _1.sh 映射到它的文件系统中,在其中运行这个脚本,出现了一个报错:Bad interpreter: No such file or directory

之后根据这个报错找到了这篇文章:vi修改文件格式编码(从dos改为unix)。出现这个问题原因就是:**Unix 及类 Unix 系统里,每行结尾只有换行 “\n”Windows 系统里面,每行结尾是换行+回车 —> “\r\n”,编码格式不一样。**

文章里给出的解决办法是在 linux 服务器上修改文件,但是我要执行的脚本文件是从 windows 映射过去的,所以还是直接在 windows 上修改这个文件的编码。

我使用的编辑器是 VSCode,直接在右下角就可以选择编码格式。之前几个启动失败的镜像对应的脚本都是 \r\n 格式的,将它们调整为 \r 格式的编码,报错解决。对应的修改方式如下,对应的修改位置是文件的右下角:

点击之后弹出下面的页面,选择 LF 即可