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=...
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
| 归档时间: |
|
| 查看次数: |
18539 次 |
| 最近记录: |