Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Linux From Scratch (version 6.8)
Назад Глава 7. Настройка скриптов загрузки системы Вперед

7.8. Файлы запуска командной оболочки Bash

Программа или командная оболочка /bin/bash (далее именуемая просто как "командная оболочка") использует набор загрузочных файлов, которые помогают создавать среду окружения для ее работы. Каждый файл имеет конкретное назначение и может по-разному влиять на то, как будет происходить вход в командную оболочку и на ее интерактивные особенности. В файлах, находящихся в директории /etc, указываются глобальные настройки командной оболочки. Если аналогичный файл есть в домашнем директории пользователя, то настройки, указывает в нем, будут переопределять глобальные настройки.

Когда пользователь успешно входит в систему, то запускается интерактивная командная оболочка с регистрацией (interactive login shel), использующая модуль /bin/login, читающий файл /etc/passwd. Интерактивная командная оболочка без регистрации (interactive non-login) обычно запускается из командной строки (например, [строка-приглашение]$/bin/bash). Неинтерактивная командная оболочка (non-interactive shell ) обычно используется в случае, когда запускается скрипт командной оболочки. Она не является интерактивной, поскольку вся обработка осуществляется скриптом и между командами оболочка не ждет ввода данных от пользователя.

Дополнительную информацию смотрите с помощью команды info bash в разделе Bash Startup Files and Interactive Shells (Файлы запуска 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> является предпочтительной для вас локалью (в нашем примере — "en_GB.iso88591"), выбранной из выданных командой locale -a.

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

Приведенные выше команды должны выдать название языка, кодировку символов, используемую локалью, текущую локаль и префикс, который для данной страны должен набираться перед телефонным номером. Если какая-нибудь из команд, приведенная выше, завершится неудачно и выдаст сообщение, подобное показанному ниже, то это значит, что либо в главе 6 ваша локаль не была установлена , либо ваша локаль не поддерживается в Glibc при установке по умолчанию.

locale: Cannot set LC_* to default locale: No such file or directory

Если это случится, вы должны либо с помощью команды localedef установить требуемую локаль, либо выбрать другую локаль. Далее предполагается, что Glibc не выдает такие сообщения об ошибках.

В некоторых пакетах, не входящих в состав LFS, может отсутствовать поддержка выбранной вами локали. Одним из примеров является библиотека X (часть системы X Window), которая выводит следующее сообщение об ошибке, если локаль не совпадает точно с одним из названий отображений символов, используемых во внутренних файлах:

Warning: locale not supported by Xlib, locale set to C

В определенных случаях в библиотеке Xlib предполагается, что название отображения символов будет указано в верхнем регистре с каноническими символами тире. Например, "ISO-8859-1", а не "iso88591". Также можно найти подходящую спецификацию, если удалить из спецификации локали часть, в которой указано отображение символов. Это можно проверить, если для обеих локалей запустить команду locale charmap. Например, можно заменить "de_DE.ISO-8859-15@euro" на "de_DE@euro" с тем, чтобы эта локаль могла быть распознана библиотекой Xlib.

Если название локали не такое, как ожидается, то другие пакеты также могут работать некорректно (и могут не выдавать выдавать сообщения о каких-либо ошибках). Для таких случаев можно получить некоторые полезные сведения, если изучить, каким образом ваша локаль поддерживается в других дистрибутивах.

После того, как будет определена правильная настройка локали, создайте файл /etc/profile:

cat > /etc/profile < "EOF"
# Begin /etc/profile

export LANG=<ll>_<CC>.<charmap><@modifiers>

# End /etc/profile
EOF

Локали "С" (используется по умолчанию) и "en_US" (рекомендуется для англоязычных пользователей США) разные. В "С" используется семибитный набор символов US-ASCII, а байты с установленным старшим битом трактуются как недопустимые символы. По этой причине в этой локали команда ls заменяет эти символы вопросительными знаками. Кроме того, попытка отправить почту с такими символами с помощью Mutt или Pine приведет к тому, что будет отослано сообщение, не соответствующее требованиям RFC (кодировка в исходящей почте будет указана как "неизвестные 8-битовые символы"). Следовательно, вы можете пользоваться локалью "C" только если вы уверены, что вам никогда не потребуется 8-битные символы.

Во многих программах также не поддерживаются локали на основе UTF-8. Работа, связанная с этим, ведется и, по возможности, такие проблемы исправляются, смотрите http://www.linuxfromscratch.org/blfs/view/svn/introduction/locale-issues.html.


Предыдущий раздел: Оглавление Следующий раздел:
Создание файла /etc/inputrc   Управление устройствами и модулями в системе LFS