Программа оболочки /bin/bash (далее именуемая как
«оболочка»)
использует начальный набор файлов, чтобы помочь создать среду для
запуска. Каждый файл имеет определенное применение и может повлиять
на вход в систему и интерактивное окружение по-разному. Файлы в
каталоге /etc
предоставляют глобальные
настройки. Если в домашнем каталоге существует эквивалентный файл, он
может переопределять глобальные настройки.
Интерактивная оболочка входа запускается после успешного входа с
использованием /bin/login, прочитав файл
/etc/passwd
. Интерактивная оболочка без
входа в систему запускается из командной строки (например,
[prompt]$
/bin/bash). Неинтерактивная
оболочка обычно присутствует когда выполняется скрипт оболочки. Он
неинтерактивен, поскольку обрабатывает скрипт и не ожидает ввода
пользователем между командами.
Для получения дополнительной информации смотрите info bash в разделе Автозагрузочные файлы и интерактивные оболочки Bash.
Файлы /etc/profile
и ~/.bash_profile
считываются при вызове оболочки как
интерактивной оболочки входа в систему.
По умолчанию в файле /etc/profile
задаются некоторые переменные окружения, необходимые для поддержки
вашего языка. Правильная их установка влияет на:
Выходные данные программ переводятся на ваш родной язык
Правильную интерпретацию символов в буквы, цифры и другие классы. Это необходимо для того, чтобы bash правильно принимал символы, отличные от ASCII, в командной строке с неанглийской локалью
Правильный порядок сортировки по алфавиту для страны
Подходящий формат бумаги по умолчанию
Правильное форматирование денежных значений, значений времени и дат
Замените <ll>
двухбуквенным кодом нужного языка (например, «en») и <CC>
двухбуквенным кодом
соответствующей страны (например, «GB»). <charmap>
следует заменить на
таблицу символов для выбранной вами локали. Также могут
присутствовать необязательные модификаторы, такие как «@euro».
Список всех языковых стандартов, поддерживаемых Glibc, можно получить, выполнив следующую команду:
locale -a
Таблицы символов могут иметь несколько синонимов, например,
«ISO-8859-1»
также упоминается как «iso8859-1» и «iso88591». Некоторые приложения не могут
корректно обрабатывать различные синонимы (например, требуют чтобы
«UTF-8»
записывалось как «UTF-8», а не «utf8»), поэтому безопаснее всего в большинстве
случаев выбирать каноническое имя для конкретной локали. Чтобы
определить каноническое имя, запустите следующую команду, где
<locale name>
- это
вывод, выдаваемый командой locale
-a для желаемой локали (в нашем примере «en_GB.iso88591»).
LC_ALL=<locale name>
locale charmap
Для локали «en_GB.iso88591» указанная выше команда напечатает:
ISO-8859-1
Окончательная настройка локали будет выглядеть так: «en_GB.ISO-8859-1». Важно, чтобы локаль, найденная с помощью приведенной выше методики, была проверена перед её добавлением в файлы запуска Bash:
LC_ALL=<locale name> locale language LC_ALL=<locale name> locale charmap LC_ALL=<locale name> locale int_curr_symbol LC_ALL=<locale name> locale int_prefix
Приведенные выше команды должны вывести название языка, кодировку символов, используемую в локали, местную валюту и телефонный код страны. Если какая-либо из команд завершается с сообщением об ошибке, похожим на указанное ниже, это означает, что ваша локаль либо не была установлена в Раздел 8.5, «Glibc-2.36», либо не поддерживается стандартной установкой Glibc
locale: Cannot set LC_* to default locale: No such file or directory
Если это произойдет, вам следует либо установить желаемую локаль с помощью команды localedef, либо рассмотреть возможность выбора другой локали. Дальнейшие инструкции не предполагают таких сообщений об ошибках от Glibc.
Другие пакеты также могут работать некорректно (но не всегда будут отображать какие-либо сообщения об ошибках), если название локали не соответствует их ожиданиям. В таких случаях изучите, какие ещё дистрибутивы Linux поддерживают ваш язык, возможно, это даст некоторую полезную информацию.
Как только будут определены правильные настройки локали, создайте
файл /etc/profile
:
cat > /etc/profile << "EOF"
# Begin /etc/profile
export LANG=<ll>_<CC>.<charmap><@modifiers>
# End /etc/profile
EOF
Локаль «C» (используемая по умолчанию) и «en_US» (одна из рекомендуемых для англоязычных пользователей в Соединенных Штатах) это раные локали. «C» использует 7-битный набор символов US-ASCII и обрабатывает байты с установленным старшим битом как недопустимые символы. Вот почему, например, команда ls заменяет их вопросительными знаками в этой локали. Кроме того, попытка отправить почту с такими символами из Mutt или Pine приводит к тому что, отправляемые сообщения не соответствуют RFC (кодировка в исходящей почте указана как «unknown 8-bit»). Рекомендуется использовать локаль «C», если вы уверены, что вам никогда не понадобятся 8-битные символы.
Некоторые программы не поддерживают локали на основе UTF-8. Ведется работа по документированию и, по возможности, устранению таких проблем, некоторые подробности смотрите по ссылке: https://mirror.linuxfromscratch.ru/blfs/view/11.2/introduction/locale-issues.html.