Jenkins 不使用系统的区域设置

Jenkins 不使用系统的区域设置

我在詹金斯身上发现了一个有趣的行为。
Jenkins 的 shell 不使用我的系统区域设置。

Jenkinsjenkins在我的系统上以用户身份运行。

通过 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 作业 shell 中输入上述命令:

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 master通过non-interactiveshell连接到slave机器,所以/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 亲切的问候,谁

相关内容