启动 Laravel-Sail 服务时遇到的 /usr/bin/env: 'bash\r' 错误

今天在使用 Laravel-Sail 构建完镜像后,使用 sail up命令启动容器时,发现sail-7.4/app镜像构建的容器启动失败,运行日志显示发生了以下错误:

kkadmin.test_1  | /usr/bin/env: 'bash\r': No such file or directory

错误截图如下:

/usr/bin/env: 'bash\r': No such file or directory

经过查阅资料,找到了错误原因:

主要是 shell 文件第一行的约定语句的bash后面多了’\r’字符的原因,在Linux终端下,输出’\r’会什么都不显示,只是把光标移到行首,因此,终端虽然输出了”/usr/bin/env bash”,但是遇到’\r’后,光标会移到到行首,接着输出错误信息”No such file or directory”,最终,bash脚本运行失败。

应该是无意间使用了 windows 编辑器更改了 shell 文件 start-container,解决办法:

在 Ubuntu 子系统中,进入项目目录,使用 vim 打开 docker/7.4/start-container文件(如果你没有发布过Dockerfile文件,该文件位于:vendor/laravel/sail/runtimes/7.4/start-container),在 vim 界面中,按 Esc键,键入以下命令:

:set ff

果然显示的格式为: fileformat=dos

将格式转为 unix 格式:

:set ff=unix

再次查看文件格式:

:set ff

现在显示文件格式为: fileformat=unix

保存文件:

:wq

然后删除构建好的sail-7.4/app镜像,重新构建镜像:

sail build --no-cache

构建完成后重新启动服务:

sail up

大功告成!

本作品采用《CC 协议》,转载必须注明作者和本文链接
顺势而为
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!