启动 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 协议》,转载必须注明作者和本文链接
顺势而为
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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