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 을 먼저 날려주고 이후 명령어를 전송하면 될 듯 하다.