В этой статье мы рассмотрим переменные, которые отвечают за локализацию и кодировку операционной системы. Данная тема достаточно важна, т.к. некоторые прикладные сервисы требуют нестандартной кодировки или региональной локализации.
В Linux системах есть основная переменная $LANG
– которая задает основной язык системы. Есть и другие переменные, но они берут изначально настройки с этой основной переменной $LANG
. Можно настроить отдельные какие-то переменные, но можно все же давать значение основной переменной $LANG
и она будет давать значение всем остальным.
Есть так же переменная LC_ALL
– которая позволяет нам разом перезаписать все языковые настройки. Есть также утилита locale
которая показывает кучу переменных, которые относятся к языковым настройкам.
$LANG=
– данную переменную обычно используют для написания скриптов, чтобы те или иные настройки установить по умолчанию для выполнения скрипта. В большинстве случаев данная настройка включает английский язык по умолчанию.
Есть такая команда env
, которая выводит заданные переменные в системе.
И тут в частности, есть переменная которая отвечает за языковые настройки. В нашем случае LANG=en_US.UTF-8
, т.к скриншот делался на операционной системе с английской локализацией по умолчанию. Мы видим en_US
в кодировке UTF-8
. En_US
– говорит о том, что у нас используется американский английский язык.
Посмотреть все переменные относящиеся к данной локализации мы можем с помощью утилиты locale
.
Как вы видите все остальные переменные на данной установленной операционной системе тоже американские. Почему это важно? Во-первых, это важно для логгирования. С такими настройками система будет писать файлы системных и других логов в американском формате yyyy-mm-dd
(год-месяц-день: 2006-12-31), в русском формате же правильно будет dd-mm-yyyy
. И при передаче логов из одной системы в другую возникнут ошибки. Другой пример - бывают нестандартные решения, допустим хранение базы данных 1С
в postgre
. Для того чтобы сервер приложений корректно работал с базой опять же необходима русская локализация. И таких примеров взаимодействия можно привести достаточно много.
Теперь, если у нас появилась необходимость поменять какую-нибудь, переменную, например, LC_TIME
то делаем следующее:
LC_TIME=ru_RU.UTF-8
– задаем переменную.
export LC_TIME
– загружаем переменную.
Мы можем сразу все настройки изменить - LC_ALL=ru_RU.UTF-8
Далее export LC_ALL
.
Если мы ошибемся с вводом локали (языковой пакет настроек) или в системе не загружена такая локаль, то система нам выдаст ошибку:
Надо выполнить инсталляцию языкового пакета
sudo apt-get install language-pack-ru
Генерация файла с обновленной информацией о добавленных пакетах в систему: sudo locale-gen
И после этого опять попробовать сменить.
Для возврата в исходное состояние настроек мы можем выполнить команду unset LC_ALL
. После выполнения данной команды все настройки языковые системы вернутся в исходное состояние.
Немного о кодировке. Кодировка - это представление символов в определенном виде. Самые распространенные кодировки, используемые в Linux:
- ASCII – 128 основных символов;
- ISO-8859 – большинство латинских символов;
- UTF-8 -символы Unicode.
Для конвертации используется утилита iconv
, но есть более практический инструмент. Если нам необходимо конвертировать какой-то файл в другой, то проще всего использовать Notepad++. Открываем файл, в меню выбираем пункт кодировка. Программа покажет текущую и меняем на интересующую нас. Затем сохраняем.
В случае если у нас только консольное подключение, делаем это с помощью iconv
. Общий вид команды:
iconv [опция] [-f кодировка 1] [-t кодировка 2] [исходный файл] [целевой файл]
Установка и настройка часовых зон.
Утилита tzselect
позволяет осуществить поиск нужной временной зоны. Появляется мастер пошаговый, который позволяет сделать свой выбор и в конце дает инструкцию, как сделать, чтобы выбор сохранился.
Вторая утилита это date
, которая выводит текущую дату и время, если запустить ее без параметров, а также позволяет установить их. Опции и форматы можно посмотреть при помощи команды man date
Для установки даты и времени необходимы права суперпользователя.
sudo date -s “yyyymmdd hh:mm”
– обратите на формат вводимых данных.