Я написал довольно длинный скрипт на 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, этого было бы достаточно.

1
cardamom 2 Май 2019 в 17:09

4 ответа

Лучший ответ

На самом деле вы можете добавить к любой команде в командной консоли любую переменную, которая будет применяться только для этой команды, будь то git или любая другая. Просто введите его, затем отделите его от вашей команды пробелом:

$ LANG=fr_FR sh -c 'echo $LANG'
fr_FR
$ echo $LANG
en_us.UTF-8

Возможно, вы захотите использовать C, чтобы убедиться, что вы используете язык по умолчанию для команды, которую вы запускаете:

$ LANG=C git

Имейте в виду, однако, что выбранный язык может быть недоступен, если он не был скомпилирован. Обычный английский, тем не менее, должен присутствовать почти всегда, так как в общем случае тот, на котором написаны строки программного обеспечения.

3
Obsidian 2 Май 2019 в 14:57

Попробуйте для одной строки:

LANG=en_US git ...your command...

Или для этой сессии bash:

export LANG=en_US
2
UtLox 2 Май 2019 в 14:50

Добавьте к команде 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>]
2
Sumudu 2 Май 2019 в 14:56

Установите LANG где-нибудь в начале скрипта:

#!/bin/sh

LANG=en_US
export LANG

Настройка работает для текущей оболочки (то есть сценария) и порожденных из нее подпроцессов, включая git.

2
phd 2 Май 2019 в 15:15