启动 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
错误截图如下:
经过查阅资料,找到了错误原因:
主要是 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 协议》,转载必须注明作者和本文链接