Я написал довольно длинный скрипт на Python, который в нескольких местах вызывает git с подпроцессом Python и сопоставляет вещи, которые git возвращает, например:
nothing to commit, working tree clean
fast-forwardable
up to date
Коллеги пошли использовать сценарий, и он не вел себя так, как ожидалось, поскольку их мерзавец использовал местную немецкую локаль с такими сообщениями:
nichts zu committen, Arbeitsverzeichnis unverändert
Я не думал об этом в то время. можно посмотреть здесь и здесь некоторые идеи для постоянного изменения языка.
Конечно, я не хочу изменять настройки на компьютерах, на которых запускается мой скрипт, возможно ли сказать git вернуться в en_US
только для одной команды?
На самом деле, когда я писал сценарий, у меня была установлена система en_GB
, и мне было интересно, использовал ли мой git en_GB
или en_US
и есть ли какая-либо разница. Можно ли попросить git сказать, на каком языке он работает? Это вторичная проблема, однако, если бы можно было сказать git временно использовать en_US
, этого было бы достаточно.
4 ответа
На самом деле вы можете добавить к любой команде в командной консоли любую переменную, которая будет применяться только для этой команды, будь то git
или любая другая. Просто введите его, затем отделите его от вашей команды пробелом:
$ LANG=fr_FR sh -c 'echo $LANG'
fr_FR
$ echo $LANG
en_us.UTF-8
Возможно, вы захотите использовать C
, чтобы убедиться, что вы используете язык по умолчанию для команды, которую вы запускаете:
$ LANG=C git
Имейте в виду, однако, что выбранный язык может быть недоступен, если он не был скомпилирован. Обычный английский, тем не менее, должен присутствовать почти всегда, так как в общем случае тот, на котором написаны строки программного обеспечения.
Попробуйте для одной строки:
LANG=en_US git ...your command...
Или для этой сессии bash:
export LANG=en_US
Добавьте к команде git
нужную ссылку на язык, чтобы применить изменения только для этой команды.
Например
По умолчанию (en_US.UTF-8
)
$ git status
fatal: Not a git repository (or any of the parent directories): .git
На немецком,
$ LANG=de_DE.UTF8 git status
fatal: Kein Git-Repository (oder irgendein Elternverzeichnis): .git
LANG
Формат:
<LANGUAGE>_<TERRITORY>.<CODESET>[@<MODIFIERS>]
- ЯЗЫК: код языка ISO 639
- ТЕРРИТОРИЯ: код страны по стандарту ISO 3166
- CODESET: набор символов
Установите LANG
где-нибудь в начале скрипта:
#!/bin/sh
LANG=en_US
export LANG
Настройка работает для текущей оболочки (то есть сценария) и порожденных из нее подпроцессов, включая git
.
Похожие вопросы
Связанные вопросы
Новые вопросы
bash
Для вопросов о скриптах, написанных для командной оболочки Bash. Для сценариев оболочки с ошибками / синтаксическими ошибками, пожалуйста, проверьте их с помощью программы shellcheck (или на сервере веб-проверки оболочки по адресу https://shellcheck.net) перед размещением здесь. Вопросы об интерактивном использовании Bash, скорее всего, будут касаться темы Super User, а не переполнения стека.