LANG=C 의 의미

2019. 11. 4. 18:43프로그래밍/Linux

참고 : https://www.lesstif.com/pages/viewpage.action?pageId=17105910

 

Unix profile 설정에서 export LANG=C 의 의미

최근의 RHEL이나 CentOS 의 기본 locale 은 utf8 이지만 예전 Linux나 AIX나 HP-UX 등의 OS  init.d/script 를 보면 다음과 같은 부분이 있는 경우가 있다.

www.lesstif.com

solaris 같은 경우 시스템 캐릭터셋이 C 로 설정되어있는 경우가 간혹 있다. 

이러한 경우 JSch 같이 SSH 접속을 지원하는 라이브러리로 원격 명령을 내리고 응답 내용을 출력할 때 한글 응답이 올 경우 깨지는 경우가 많다.

필자도 많은 시간을 이것 때문에 고생을 했는데, 의외로 간단하게 해결했다.

접속할 대상 서버(여기서는 solaris)에서 Jsch를 이용하여 실행할 쉘 스크립트(.sh 파일) 의 상단에

setenv LANG ko_KR.UTF-8    <-- 이 한줄을 추가하여 저장해준다.

그리고 JSch에서 읽어오는 InputStreamReader의 캐릭터셋은 UTF-8로 설정해주면 된다.

만약 솔라리스가 아닌 리눅스라면 export LANG="ko_KR.UTF-8" 을 삽입해주면 되겠다.

쉘 스크립트가 아닌 명령어를 직접 전송하는 작업이라면 마찬가지로 해당 명령을 전송하기 전에 setenv LANG ko_KR.UTF-8 을 먼저 날려주고 이후 명령어를 전송하면 될 듯 하다.