문제점
linux나 mac 또는 windows에서 사용하는 shell script를 intellij에서 실행하려고 하면 아래와 같은 오류가 발생한다.
build.sh: line 2: $'\r': command not found
build.sh: line 4: $'\r': command not found
error: invalid flag: softdrink/module-info.java
Usage: javac <options> <source files>
use --help for a list of possible options
: no such file or directory
build.sh: line 9: $'\r': command not found
발생 사유
linux/mac에서 사용하는 파일의 format과 windows에서 사용하는 format이 달라서 나는 문제이다.
그 중에서 한 라인의 종료를 어떻게 표시하느냐에 따라서 위와 같은 오류가 발생한다.
- unix : Line Feed 방식 (LF)으로 라인을 분리한다. \n
- mac classic : Single Carriage Return 방식 (CR)으로 라인을 분리한다. \r
- windows : Line Feed와 Single Carriage Return (CR/LF) 을 모두 사용한다. \r\n
윈도우에 맞게 파일 format을 수정해주는 일은 귀찮다.
그래서 Intellij에서는 Change Line separators 기능을 제공해준다.
대응 방법
아래 이미지를 보면 CR방식의 파일을 CRLF방식으로 보고 script를 실행시키자 오류가 나는 것을 볼 수 있다.
왜 이런 오류가 나는지 확인해 보자.
$ od -c build.sh
위는 octal dump 명령어인 od 명령어를 사용할 수 있다는 전제이다.
od명령어는 unix나 linux, windows에서 일반적으로 사용 가능하다.
0000000 / b i n / r m - r f o u t p
0000020 u t \r \n \r \n m k d i r - p o
0000040 u t p u t / m l i b \r \n \r \n m k
0000060 d i r - p o u t p u t / c l
0000100 a s s e s \r \n j a v a c - d
0000120 o u t p u t / c l a s s e s `
0000140 f i n d s o f t d r i n k -
0000160 n a m e * . j a v a ` \r \n j a
0000200 r - c - f o u t p u t / m
0000220 l i b / s o f t d r i n k . j a
0000240 r - C o u t p u t / c l a s
0000260 s e s . \r \n / b i n / r m -
0000300 r f o u t p u t / c l a s s e
0000320 s \r \n \r \n m k d i r - p o u
위와 같이 hex로 글자를 확인해 보면 \r\n이 사용되는 것을 확인할 수 있다.
위의 script 오류를 보면
'\r': command not found
을 인식하지 못하는 것으로 보인다.
해당 파일 script 실행기는 \n은 인식이 가능한 것으로 보임으로 LF로 파일로 변환시켜서 실행 시키면 될 듯하다.
우하단에 Change Line separators 기능을 이용해서 LF로 파일 포멧을 수정해 줍니다.
$ od -c build.sh
0000000 / b i n / r m - r f o u t p
0000020 u t \n \n m k d i r - p o u t
0000040 p u t / m l i b \n \n m k d i r
0000060 - p o u t p u t / c l a s s e
0000100 s \n j a v a c - d o u t p u
0000120 t / c l a s s e s ` f i n d
0000140 s o f t d r i n k - n a m e
0000160 * . j a v a ` \n j a r - c -
위에 \r\n 으로 되어있던 라인종료를 '\n'으로 변경한 것을 볼 수 있습니다.
이제 실행해 보면 잘 작동하는 것을 확인할 수 있습니다.
728x90
반응형
'intellij' 카테고리의 다른 글
Intellij Spring boot Hot Swap / Hot Deploy 설정하기 (0) | 2022.02.16 |
---|---|
Intellij cygwin 연동하기 (0) | 2022.01.14 |
Intellij 에서 Spring Boot application.yml 또는 application.properties 를 못 읽어 올 때 (Resource 접근 안될 때) (0) | 2021.06.14 |
Intellij UTF 8 설정 (2) | 2021.05.24 |
Intellij Editor 창 Font Size 변경 (0) | 2021.04.26 |