Jenkins不使用系统的语言环境


10

在詹金斯,我有一个有趣的举动。
Jenkins的shell不使用我的系统语言环境。

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

jenkins通过SSH 登录:

locale 显示:

LANG = zh_CN.UTF-8
LANGUAGE = zh_CN:zh-
CN LC_CTYPE =“ zh_CN.UTF-8”
等。

env显示LANGLANGUAGE变量:

LANG = zh_CN.UTF-8
LANGUAGE = zh_CN:zh

id 显示用户的ID:

uid = 1008(jenkins)gid = ...

将以上命令输入到jenkins作业外壳:

locale 显示:

LANG =
LANGUAGE =
LC_CTYPE =“ POSIX”
等...

env没有表现出LANGLANGUAGE变数

id 显示用户的ID(如预期):

uid = 1008(jenkins)gid = ...

文件:

/etc/profile 包含:

export LANG = zh_CN.UTF-8
export LANGUAGE = zh_CN:zh -CN

/etc/default/locale 包含:

export LANG = zh_CN.UTF-8
export LANGUAGE = zh_CN:zh -CN

启动脚本/etc/init.d/jenkins应导出系统的语言环境:


如果[-r / etc / default / locale] 加载环境;然后
。/ etc / default / locale
导出LANG LANGUAGE
elif [-r / etc / environment]; 然后
。/ etc / environment
导出LANG语言
FI


当然,在修改语言环境后,我会重新启动;)

Apache也使用系统的语言环境。
我的系统是Ubuntu 14.04安装。
我想念其他东西吗?

感谢您的阅读!
我希望有人可以帮助:)


Jenkins似乎重置了构建外壳程序中的所有环境变量。检查项目设置。还有一个env-inject插件
jofel 2014年

您的解决方案应该是答案,而不是问题的编辑……
jasonwryan 2014年

Answers:


10

解:

发生这种情况是因为Jenkins主服务器通过non-interactive外壳连接到从计算机,因此/etc/profile不执行,也/etc/default/locale没有任何效果。
non-interactive贝壳通常使用~/.bashrc

关于这个主题的几乎所有详细信息都可以在askubuntu上找到:
https : //askubuntu.com/questions/247738/why-is-etc-profile-not-invoked-for-non-login-shells

添加到~/.bashrc

export LANG = zh_CN.UTF-8
export LANGUAGE = zh_CN:zh -CN


为我做了。

这里也讨论了这个“奴隶问题”:
https : //groups.google.com/forum/#! topic / jenkinsci- users / hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users / g0fNnDltqeM 亲切的问候,whosit

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.