2

я использую 'exif' на сервере (Debian GNU/Linux 6.0.6 (squeeze)) и в отличие от моего компьютера разработчика (Mac OS X через MacPort) он работает на французском языке:

exif -h
Utilisation: exif [OPTION...] fichier
  -v, --version                      Display software version
  -i, --ids                          Montre les ID plutôt que les noms des marqueurs
  -t, --tag=marqueur                 Sélection du marqueur
      --ifd=IFD                      Sélection de l'IFD
  -l, --list-tags                    Liste tous les marqueurs EXIF
  -|, --show-mnote                   Show contents of tag MakerNote
      --remove                       Supprime le marqueur ou l'ifd
  -s, --show-description             Montre la description du marqueur
  -e, --extract-thumbnail            Extrait la vignette
  -r, --remove-thumbnail             Supprime la vignette
  -n, --insert-thumbnail=FICHIER     Insère le FICHIER comme vignette
      --no-fixup                     Do not fix existing tags in files
  -o, --output=FICHIER               Write data to FILE
      --set-value=STRING             Value of tag
  -c, --create-exif                  Create EXIF data if not existing
  -m, --machine-readable             Output in a machine-readable (tab delimited) format
  -w, --width=WIDTH                  Width of output
  -x, --xml-output                   Output in a XML format
  -d, --debug                        Show debugging messages

Я проверяю мой /etc /default /locale, и это было

LANG=fr_FR
LANGUAGE=fr_FR:fr

который я изменил в

LANG=en_EN
LANGUAGE=en_EN:en

без каких-либо последствий. Любой намек на то, как заставить эту машину выполнять эту программу на английском языке? Потому что мне нужны ярлыки exif-data на английском языке :)

Спасибо !

1 ответ1

4

Файл /etc/default/locale устанавливает uhm ... "глобальные" значения по умолчанию. Это означает, что эти значения по умолчанию читаются любой оболочкой "верхнего уровня" при запуске, а затем наследуются процессами, которые запускаются.

Короче говоря, это означает, что такие значения по умолчанию применяются к:

  • Все демоны (программы, работающие в фоновом режиме), поскольку они запускаются с использованием сценариев оболочки, расположенных в /etc/init.d .
  • Интерактивные оболочки, которые вы запускаете в сеансе входа в систему.

Так что простое изменение этого файла требует перезагрузки.

Но, поскольку содержимое этого файла является просто сценарием оболочки, который устанавливает набор так называемых "переменных среды", для выполнения одной конкретной программы вам просто нужно, чтобы эта программа видела различное содержимое этих переменных.

Самый простой способ добиться этого - просто поставить их назначение перед запуском программы, то есть в командной строке вы можете сделать следующее:

$ LANG=en exif -h

и посмотрите, как exif говорит с вами по-английски (здесь символ $ обозначает приглашение оболочки - не вводите его).

Второй способ - заставить все программы в текущей оболочке видеть новое содержимое переменных; это делается путем их "экспорта", как показало @clarkw: экспортированная переменная и ее содержимое наследуются средой всех процессов, запускаемых из оболочки, поэтому также работает следующее:

$ export LANG=en
$ exif -h

или же

$ LANG=en
$ export LANG
$ exif -h

Эти переменные среды описаны на странице locale(1).

И последний совет: не изменяйте содержимое /etc/default/locale вручную - используйте способ управления им в Debian: run

# dpkg-reconfigure locales

который сначала спросит вас, какие локали нужно скомпилировать и установить (вы можете пропустить этот шаг), а затем какой выбрать по умолчанию.

Обновление: вот страница в вики Debian, посвященная локалям, которая в значительной степени объясняет все необходимое, включая переменные среды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .