이호영 이호영 07-27
fix: start.sh가 CRLF로 된 env 파일도 견디게 함
서버에서 itnhub.env를 Windows에서 만들어 올리면 source 할 때 줄 끝 캐리지 리턴이
값에 그대로 붙는다. DB 비밀번호나 SERVER_PORT가 조용히 틀어지고 빈 줄에서는
command not found 가 뜬다. 캐리지 리턴을 걷어낸 사본을 만들어 읽도록 바꾼다.
원본 파일은 그대로 둔다.

alpine에서 bash -n, shellcheck, CRLF env 주입까지 확인했다.

Co-Authored-By: Claude Opus 5 (1M context) 
@78aca880a88aab2631f6066703cbb03fb3c38cbb
deploy/start.sh
--- deploy/start.sh
+++ deploy/start.sh
@@ -28,10 +28,18 @@
   exit 1
 fi
 
+# env 파일을 Windows에서 만들었다면 줄 끝에 캐리지 리턴(0x0D)이 남는다. 그대로 source 하면
+# 값 끝에 그 문자가 붙어 DB 인증 실패나 포트 파싱 오류가 나고, 빈 줄에서는
+# "command not found" 가 뜬다. 그래서 캐리지 리턴을 걷어낸 사본을 만들어 읽는다.
+# 원본 파일은 건드리지 않는다.
+ENV_TMP=$(mktemp)
+trap 'rm -f "$ENV_TMP"' EXIT
+tr -d '\015' < "$ENV_FILE" > "$ENV_TMP"
+
 # set -a 를 켜면 이후 대입되는 변수가 모두 export 된다(파일에 export를 안 써도 된다).
 set -a
 # shellcheck disable=SC1090
-. "$ENV_FILE"
+. "$ENV_TMP"
 set +a
 
 # 필수 8개가 비어 있으면 기동 도중에 죽으므로 여기서 먼저 걸러낸다.
@@ -60,6 +68,7 @@
 mkdir -p "$LOG_FILE_PATH"
 
 # ── 기동 ─────────────────────────────────────────────────────────────
+# shellcheck disable=SC2086  # JAVA_OPTS는 여러 옵션이라 일부러 분리되게 둔다.
 nohup "$JAVA_HOME_BIN/java" $JAVA_OPTS -jar "$DEPLOY_PATH/$FILE_NM" \
   >> "$LOG_FILE_PATH/$LOG_FILE_NM" 2>&1 &
 
Add a comment
List