啟動 Laravel-Sail 服務時遇到的 /usr/bin/env: 'bash\r' 錯誤

myhui0926發表於2021-05-30

今天在使用 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 協議》,轉載必須註明作者和本文連結
順勢而為

相關文章