Jenkins는 시스템의 로케일을 사용하지 않습니다.

Jenkins는 시스템의 로케일을 사용하지 않습니다.

Jenkins에서 흥미로운 동작을 발견했습니다.
Jenkins의 쉘은 내 시스템 로케일을 사용하지 않습니다.

Jenkins는 jenkins내 시스템에서 사용자로 실행됩니다.

SSH를 통해 로그인 jenkins:

locale보여주다:

LANG=en_US.UTF- 8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
등...

env디스플레이 LANGLANGUAGE변수:

LANG=en_US.UTF-8
LANGUAGE=en_US:en

id사용자 ID 표시:

uid=1008(젠킨스) gid=...

Jenkins 작업 셸에 위 명령을 입력합니다.

locale보여주다:

LANG=
LANGUAGE=
LC_CTYPE="POSIX"
등...

env하다아니요디스플레이 LANGLANGUAGE변수

id사용자 ID 표시(예상대로):

uid=1008(젠킨스) gid=...

문서:

/etc/profile포함하다:

내보내기 LANG=en_US.UTF-8
내보내기 LANGUAGE=en_US:en

/etc/default/locale포함하다:

내보내기 LANG=en_US.UTF-8
내보내기 LANGUAGE=en_US:en

시작 스크립트는 /etc/init.d/jenkins시스템의 로케일을 내보내야 합니다.

# 환경 로드
if [ -r /etc/default/locale ]
; /etc/default/locale
내보내기 LANG LANGUAGE
elif [ -r /etc/environment ]
; /etc/environment
LANG LANGUAGE
fi 내보내기


물론 로케일을 변경한 후 재부팅했습니다.)

Apache도 시스템의 로케일을 사용합니다.
내 시스템은 Ubuntu 14.04 설치입니다.
제가 다른 것을 확인하는 것을 놓쳤나요?

읽어 주셔서 감사합니다!
누군가가 도울 수 있기를 바랍니다 :)

답변1

해결책:

이러한 상황은 Jenkins 마스터가 non-interactive셸을 통해 슬레이브 머신에 연결되어 있어 /etc/profile실행되지 않고 /etc/default/locale아무런 효과가 없기 때문에 발생합니다.
non-interactiveshell은 일반적으로 사용됩니다 ~/.bashrc.

이 주제에 대한 거의 모든 세부 정보는 askubuntu에서 찾을 수 있습니다.
https://askubuntu.com/questions/247738/why-is-etc-profile-not-invoked-for-non-login-shells

에 추가 ~/.bashrc:

내보내기 LANG=en_US.UTF-8
내보내기 LANGUAGE=en_US:en


나를 위해 만들어졌습니다.

이 "종속 문제"도 여기에서 논의됩니다.
https://groups.google.com/forum/#!topic/jenkinsci-users/hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users/g0fNnDltqeM 잘 부탁해, 누구

관련 정보