Jenkins에서 흥미로운 동작을 발견했습니다.
Jenkins의 쉘은 내 시스템 로케일을 사용하지 않습니다.
Jenkins는 jenkins
내 시스템에서 사용자로 실행됩니다.
SSH를 통해 로그인 jenkins
:
locale
보여주다:
LANG=en_US.UTF- 8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
등...
env
디스플레이 LANG
및 LANGUAGE
변수:
LANG=en_US.UTF-8
LANGUAGE=en_US:en
id
사용자 ID 표시:
uid=1008(젠킨스) gid=...
Jenkins 작업 셸에 위 명령을 입력합니다.
locale
보여주다:
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
등...
env
하다아니요디스플레이 LANG
및 LANGUAGE
변수
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-interactive
shell은 일반적으로 사용됩니다 ~/.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
잘 부탁해, 누구