주요글: 도커 시작하기
반응형

윈도우에서 작성한 리눅스 쉘 파일을 리눅스에 배포할 때, 종종 실행이 제대로 되지 않는 경우가 있는데, 그것은 윈도우의 라인 구분자가 CR(캐리지 리턴, \r)-LF(라인 피드, \n)인 반면에 리눅스는 LF이기 때문이다. 라인 구분에 포함된 캐리지리턴으로 인해 잘못된 텍스트 값을 사용하게 되고 이로 인해 파일이름이라든가, 여러 부분에서 문제가 발생하는 것이다.


리눅스에서 CR-LF를 LF로 변환해주는 몇 가지 방법이 있지만 (검색해보니 다양한 방법이 있다), 개발PC가 윈도우다 보니 배포 과정에서 어떻게 처리하는 방법이 없을까 고민했는데, 배포 도구로 사용중인 Ant에서 처리하는 방법을 찾았다.


Ant에 보면 FixCRLF 라는 태스크가 있는데, 이 태스크를 사용하면 특정 파일의 라인 구분자를 손쉽게 변경할 수 있게 된다. 아래는 이 태스크의 사용 예를 보여주고 있다.


<target name="deploy" depends="package">

<copy todir="./target-real">

<fileset dir="./src/script">

<include name="*.sh"/>

</fileset>

</copy>

<fixcrlf srcdir="./target-real" includes="**/*.sh" eol="lf" />

...

<echo message="===== Complete Deploying ======" />

</target>


위 코드에서 <fixcrlf> 태그는 ./target-real에 있는 모든 sh의 라인 구분자를 LF로 변환해주기 때문에, 별도의 귀찮은 작업들(리눅스에서 변경해준다거나, 개발 환경의 라인 구분자를 변경한다거나 하는 등)을 할 필요가 없다.

+ Recent posts