見出し画像

$'\r': command not found が出たときの修正方法

こんにちは! haru です!

今回の記事では、./entrypoint.sh: line 2: $'\r': command not found が出たときの修正方法を書いています!

1. エラー内容

実行環境:MAC

./entrypoint.sh: line 2: $'\r': command not found

docker-compose up --build にて、エラー発生

entrypoint.sh

#!/bin/sh

if [ "$DATABASE" = "postgres" ]
then
   echo "Waiting for postgres..."

   while ! nc -z $DATABASE_HOST $DATABASE_PORT; do
     sleep 0.1
   done

   echo "PostgreSQL started"
fi

exec "$@"

2. 解決方法

改行コードが原因でエラーが発生しています。

プロジェクトのルートディレクトリに
.editorconfig
を作成します。 EditorConfig について詳しく知りたい方は

この記事がわかりやすかったので是非見てみてください。

.editorconfig に以下コードを記述

[*.sh]
end_of_line = lf

このように書くと解決します。 * で拡張子が .sh のファイル全てを対象(開発環境と本番環境でファイルを分けている場合に役立ちます)

二行目の end_of_line とは改行コードの指定をしています。

Linux などの UNIX系では「LF」

windows系では「CR + LF」

が改行コードとして使用されています。環境ごとに適した改行コードを選択しないとエラーが起きるということですね。

MACの方は

end_of_line = lf

windows の方は

end_of_line = crlf

と記述すれば解決します。

改行コードについてさらに知りたい方は

https://wa3.i-3-i.info/diff129crlf.html

こちらの記事がわかりやすく紹介しているので是非ご覧ください!


3. 自分がエラーにかかった経緯

言語ごとのインデント(Pythonだったら4, JavaScriptだったら2)とわけてコーディングしたい。と思っていて

こんなことを呟いたら EditorConfig使えるよ!
と教えてくださった方がいたので、いろいろ調べてみると

root = true

[*]
indent_style = space
indent_size = 4
end_of_line = crlf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

こうやって書けば解決!みたいなことが書いてあったので全て真似したらこのようなエラーになりましたね・・・

そもそもMACだから改行コードも lf じゃなきゃいけないのに・・・😅

もう少し、ちゃんと調べるべきだと反省しています😓

いいなと思ったら応援しよう!