Я получил интересное поведение в Дженкинс.
Оболочка Дженкинса не использует мои системные локали.
Дженкинс работает как пользователь jenkins
в моей системе.
Вы вошли как 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
показывает идентификатор пользователя:
UID = 1008 (Дженкинс) GID = ...
Введенные выше команды для оболочки работы jenkins:
locale
отображается:
LANG =
LANGUAGE =
LC_CTYPE = "POSIX" и
т. Д ...
env
ничего не показывает LANG
и LANGUAGE
переменные
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
export LANG LANGUAGE
elif [-r / etc / environment]; тогда
. / etc / environment
export LANG ЯЗЫК
fi
Конечно, я перезагружался после изменения локалей;)
Apache также использует локали
системы. Моя система - установка Ubuntu 14.04.
Я пропустил, чтобы проверить что-то еще?
Спасибо за чтение!
Я надеюсь, что кто-нибудь может помочь :)
Ответы:
Решение:
Это происходит потому, что мастер Jenkins подключается к подчиненному компьютеру через
non-interactive
оболочку, поэтому/etc/profile
не выполняется, а также/etc/default/locale
не оказывает никакого влияния.non-interactive
снаряды обычно используют~/.bashrc
.Почти все подробности по этой теме можно найти в askubuntu:
/ubuntu/247738/why-is-etc-profile-not-invoked-for-non-login-shells
добавив в
~/.bashrc
:сделал это для меня.
Эта «ведомая проблема» также обсуждается здесь:
https://groups.google.com/forum/#!topic/jenkinsci-users/hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users / g0fNnDltqeM С наилучшими пожеланиями, whosit
источник