Jenkins 不使用系统的语言环境

who*_*sit 10 shell ubuntu locale bashrc jenkins

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

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

jenkins通过 SSH登录:

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 作业 shell:

locale 显示:

LANG=
LANGUAGE=
LC_CTYPE="POSIX"
等等...

env并没有表现出LANG与LANGUAGE变数

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

uid=1008(詹金斯) gid=...

文件:

/etc/profile 包含:

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

/etc/default/locale 包含:

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

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

# 加载环境
if [ -r /etc/default/locale ]; 然后
。/etc/default/locale
export LANG LANGUAGE
elif [ -r /etc/environment ]; 然后
。/etc/environment
export LANGUAGE
fi


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

Apache 也使用系统的语言环境
我的系统是 Ubuntu 14.04 安装。
我错过了检查其他东西吗?

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

who*_*sit 10

解决方案:

出现这种情况是因为Jenkins master通过non-interactiveshell连接到slave机器,所以/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=en_US.UTF-8
export LANGUAGE=en_US:en


为我做的。

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