lfs-ru/chapter09/profile.xml

154 lines
12 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-config-profile" revision="sysv">
<?dbhtml filename="profile.html"?>
<title>Файлы запуска оболочки Bash</title>
<indexterm zone="ch-config-profile">
<primary sortas="e-/etc/profile">/etc/profile</primary>
</indexterm>
<para>Программа оболочки <command>/bin/bash</command> (далее именуемая как
<quote>оболочка</quote>) использует начальный набор файлов, чтобы помочь
создать среду для запуска. Каждый файл имеет определенное назначение и может по-разному
влиять на вход в систему и интерактивное окружение. Файлы в каталоге <filename
class="directory">/etc</filename> содержат глобальные настройки. Если в домашнем
каталоге существуют эквивалентные файлы, они могут переопределить глобальные настройки.</para>
<para>Интерактивная оболочка входа запускается после успешного входа с использованием
<command>/bin/login</command>, прочитав файл <filename>/etc/passwd</filename>. Интерактивная
оболочка без входа в систему запускается из командной строки (например,
<prompt>[prompt]$</prompt><command>/bin/bash</command>). Неинтерактивная оболочка обычно
присутствует когда выполняется скрипт оболочки. Он неинтерактивен, поскольку обрабатывает скрипт
и не ожидает ввода пользователем между командами.</para>
<para>Для получения дополнительной информации смотрите разделы
<emphasis>Загрузочные файлы Bash</emphasis> и <emphasis>Интерактивные оболочки</emphasis>
главы <emphasis>Возможности Bash</emphasis> на информационных страницах Bash
(<command>info bash</command>).</para>
<para>Файлы <filename>/etc/profile</filename> и
<filename>~/.bash_profile</filename> считываются при вызове оболочки как интерактивной
оболочки входа в систему.</para>
<para>По умолчанию в файле <filename>/etc/profile</filename> задаются некоторые переменные окружения,
необходимые для поддержки вашего языка. Правильная их установка влияет на:</para>
<itemizedlist>
<listitem>
<para>Выходные данные программ переводятся на ваш родной язык</para>
</listitem>
<listitem>
<para>Правильную интерпретацию символов в буквы, цифры и другие классы. Это необходимо для того,
чтобы <command>bash</command> правильно принимал символы, отличные от ASCII, в командной строке
с неанглийской локалью</para>
</listitem>
<listitem>
<para>Правильный порядок сортировки по алфавиту для страны</para>
</listitem>
<listitem>
<para>Подходящий формат бумаги по умолчанию</para>
</listitem>
<listitem>
<para>Правильное форматирование денежных значений, значений времени и дат</para>
</listitem>
</itemizedlist>
<para>Замените <replaceable>&lt;ll&gt;</replaceable> двухбуквенным кодом нужного языка (например,
<quote>en</quote>) и <replaceable>&lt;CC&gt;</replaceable> двухбуквенным кодом соответствующей
страны (например, <quote>GB</quote>). <replaceable>&lt;charmap&gt;</replaceable> следует заменить
на таблицу символов для выбранной вами локали. Также могут присутствовать необязательные модификаторы,
такие как <quote>@euro</quote>.</para>
<para>Список всех языковых стандартов, поддерживаемых Glibc, можно получить, выполнив следующую команду:</para>
<screen role="nodump"><userinput>locale -a</userinput></screen>
<para>Таблицы символов могут иметь несколько синонимов, например, <quote>ISO-8859-1</quote> также упоминается
как <quote>iso8859-1</quote> и <quote>iso88591</quote>.
Некоторые приложения не могут корректно обрабатывать различные синонимы (например, требуют чтобы
<quote>UTF-8</quote> записывалось как <quote>UTF-8</quote>, а не <quote>utf8</quote>), поэтому
безопаснее всего в большинстве случаев выбирать каноническое имя для конкретной локали. Чтобы определить
каноническое имя, запустите следующую команду, где <replaceable>&lt;locale
name&gt;</replaceable> - это вывод, выдаваемый командой <command>locale -a</command> для желаемой
локали (в нашем примере <quote>en_GB.iso88591</quote>).</para>
<screen role="nodump"><userinput>LC_ALL=<replaceable>&lt;locale name&gt;</replaceable> locale charmap</userinput></screen>
<para>Для локали <quote>en_GB.iso88591</quote> указанная выше команда напечатает:</para>
<screen><computeroutput>ISO-8859-1</computeroutput></screen>
<para>Окончательная настройка локали будет выглядеть так: <quote>en_GB.ISO-8859-1</quote>.
Важно, чтобы локаль, найденная с помощью приведенной выше методики, была проверена перед
её добавлением в файлы запуска Bash:</para>
<screen role="nodump"><userinput>LC_ALL=&lt;locale name&gt; locale language
LC_ALL=&lt;locale name&gt; locale charmap
LC_ALL=&lt;locale name&gt; locale int_curr_symbol
LC_ALL=&lt;locale name&gt; locale int_prefix</userinput></screen>
<para>Приведенные выше команды должны вывести название языка, кодировку символов, используемую в локали,
местную валюту и телефонный код страны. Если какая-либо из команд завершается с сообщением об ошибке, похожим
на указанное ниже, это означает, что ваша локаль либо не была установлена в <xref linkend="ch-system-glibc"/>,
либо не поддерживается стандартной установкой Glibc</para>
<screen><computeroutput>locale: Cannot set LC_* to default locale: No such file or directory</computeroutput></screen>
<para>Если это произойдет, вам следует либо установить желаемую локаль с помощью команды
<command>localedef</command>, либо рассмотреть возможность выбора другой локали. Дальнейшие
инструкции не предполагают таких сообщений об ошибках от Glibc.</para>
<!-- FIXME: the xlib example will became obsolete real soon -->
<!--<para>Some packages beyond LFS may also lack support for your chosen locale. One
example is the X library (part of the X Window System), which outputs the
following error message if the locale does not exactly match one of the character
map names in its internal files:</para>
<screen><computeroutput>Warning: locale not supported by Xlib, locale set to C</computeroutput></screen>
<para>In several cases Xlib expects that the character map will be listed in
uppercase notation with canonical dashes. For instance, "ISO-8859-1" rather
than "iso88591". It is also possible to find an appropriate specification by
removing the charmap part of the locale specification. This can be checked
by running the <command>locale charmap</command> command in both locales.
For example, one would have to change "de_DE.ISO-8859-15@euro" to
"de_DE@euro" in order to get this locale recognized by Xlib.</para>
-->
<para>Другие пакеты также могут работать некорректно (но не обязательно будут отображать
какие-либо сообщения об ошибках), если название локали не соответствует их ожиданиям. В
таких случаях может оказаться полезной информация о том, как другие дистрибутивы Linux
поддерживают вашу локаль.</para>
<para>Как только будут определены правильные настройки локали, создайте файл
<filename>/etc/profile</filename>:</para>
<screen><userinput>cat &gt; /etc/profile &lt;&lt; "EOF"
<literal># Begin /etc/profile
export LANG=<replaceable>&lt;ll&gt;_&lt;CC&gt;.&lt;charmap&gt;&lt;@modifiers&gt;</replaceable>
# End /etc/profile</literal>
EOF</userinput></screen>
<para>Локаль <quote>C</quote> (используемая по умолчанию) и <quote>en_US.utf8</quote> (рекомендуемая для
англоязычных пользователей в Соединенных Штатах) это раные локали. <quote>C</quote>
использует 7-битный набор символов US-ASCII и обрабатывает байты с установленным старшим битом как
недопустимые символы. Вот почему, например, команда <command>ls</command> заменяет их вопросительными
знаками в этой локали. Кроме того, попытка отправить письмо с такими символами из Mutt или Pine приводит
к отправке сообщений не соответствующих RFC (кодировка в исходящей почте указана как <quote>unknown
8-bit</quote>). Таким образом, вы можете использовать локаль <quote>C</quote>, только в том случае,
если уверены, что вам никогда не понадобятся 8-битные символы.</para>
<para>Некоторые программы не поддерживают локали на основе UTF-8. Ведется работа по документированию и,
по возможности, устранению таких проблем. Некоторые подробности смотрите по ссылке:
<ulink url="&blfs-book;introduction/locale-issues.html"/>.</para>
</sect1>