|
@@ -1,4 +1,4 @@
|
|
-<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
|
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
|
@@ -8,134 +8,186 @@
|
|
<sect1 id="ch-scripts-profile" revision="sysv">
|
|
<sect1 id="ch-scripts-profile" revision="sysv">
|
|
<?dbhtml filename="profile.html"?>
|
|
<?dbhtml filename="profile.html"?>
|
|
|
|
|
|
- <title>The Bash Shell Startup Files</title>
|
|
|
|
|
|
+ <title>Bash Shell 启动文件</title>
|
|
|
|
|
|
<indexterm zone="ch-scripts-profile">
|
|
<indexterm zone="ch-scripts-profile">
|
|
<primary sortas="e-/etc/profile">/etc/profile</primary>
|
|
<primary sortas="e-/etc/profile">/etc/profile</primary>
|
|
</indexterm>
|
|
</indexterm>
|
|
|
|
|
|
- <para>The shell program <command>/bin/bash</command> (hereafter referred to
|
|
|
|
|
|
+ <!--para>The shell program <command>/bin/bash</command> (hereafter referred to
|
|
as <quote>the shell</quote>) uses a collection of startup files to help
|
|
as <quote>the shell</quote>) uses a collection of startup files to help
|
|
create an environment to run in. Each file has a specific use and may affect
|
|
create an environment to run in. Each file has a specific use and may affect
|
|
login and interactive environments differently. The files in the <filename
|
|
login and interactive environments differently. The files in the <filename
|
|
class="directory">/etc</filename> directory provide global settings. If an
|
|
class="directory">/etc</filename> directory provide global settings. If an
|
|
equivalent file exists in the home directory, it may override the global
|
|
equivalent file exists in the home directory, it may override the global
|
|
- settings.</para>
|
|
|
|
-
|
|
|
|
- <para>An interactive login shell is started after a successful login, using
|
|
|
|
|
|
+ settings.</para-->
|
|
|
|
+ <para>Shell 程序 <command>/bin/bash</command> (之后简称 shell)
|
|
|
|
+ 使用一组启动文件,以帮助创建运行环境。每个文件都有专门的用途,
|
|
|
|
+ 可能以不同方式影响登录和交互环境。
|
|
|
|
+ <filename class="directory">/etc</filename> 目录中的文件提供全局设定,
|
|
|
|
+ 如果在用户主目录中有对应的文件存在,它可能覆盖全局设定。</para>
|
|
|
|
+
|
|
|
|
+ <!--para>An interactive login shell is started after a successful login, using
|
|
<command>/bin/login</command>, by reading the <filename>/etc/passwd</filename>
|
|
<command>/bin/login</command>, by reading the <filename>/etc/passwd</filename>
|
|
file. An interactive non-login shell is started at the command-line (e.g.,
|
|
file. An interactive non-login shell is started at the command-line (e.g.,
|
|
<prompt>[prompt]$</prompt><command>/bin/bash</command>). A non-interactive
|
|
<prompt>[prompt]$</prompt><command>/bin/bash</command>). A non-interactive
|
|
shell is usually present when a shell script is running. It is non-interactive
|
|
shell is usually present when a shell script is running. It is non-interactive
|
|
because it is processing a script and not waiting for user input between
|
|
because it is processing a script and not waiting for user input between
|
|
- commands.</para>
|
|
|
|
-
|
|
|
|
- <para>For more information, see <command>info bash</command> under the
|
|
|
|
- <emphasis>Bash Startup Files and Interactive Shells</emphasis> section.</para>
|
|
|
|
-
|
|
|
|
- <para>The files <filename>/etc/profile</filename> and
|
|
|
|
|
|
+ commands.</para-->
|
|
|
|
+ <para>在使用 <command>/bin/login</command> 成功登录后,
|
|
|
|
+ 它读取 <filename>/etc/passwd</filename> 中的 shell 命令行,
|
|
|
|
+ 启动一个交互式登录 shell。通过命令行(如
|
|
|
|
+ <prompt>[prompt]$</prompt><command>/bin/bash</command>)
|
|
|
|
+ 可以启动一个交互式非登录 shell。非交互 shell 通常在 shell 脚本运行时存在,
|
|
|
|
+ 它处理脚本,在执行命令时不需要等待用户输入,因此是非交互的。</para>
|
|
|
|
+
|
|
|
|
+ <!--para>For more information, see <command>info bash</command> under the
|
|
|
|
+ <emphasis>Bash Startup Files and Interactive Shells</emphasis> section.</para-->
|
|
|
|
+ <para>阅读 <command>info bash</command> 中
|
|
|
|
+ <emphasis>Bash Startup Files and Interactive Shells</emphasis> 一节,
|
|
|
|
+ 了解更多信息。</para>
|
|
|
|
+
|
|
|
|
+ <!--para>The files <filename>/etc/profile</filename> and
|
|
<filename>~/.bash_profile</filename> are read when the shell is
|
|
<filename>~/.bash_profile</filename> are read when the shell is
|
|
- invoked as an interactive login shell.</para>
|
|
|
|
|
|
+ invoked as an interactive login shell.</para-->
|
|
|
|
+ <para>文件 <filename>/etc/profile</filename> 和
|
|
|
|
+ <filename>~/.bash_profile</filename> 在 shell 作为交互登录 shell
|
|
|
|
+ 时被读取。</para>
|
|
|
|
|
|
- <para>The base <filename>/etc/profile</filename> below sets some
|
|
|
|
|
|
+ <!--para>The base <filename>/etc/profile</filename> below sets some
|
|
environment variables necessary for native language support. Setting
|
|
environment variables necessary for native language support. Setting
|
|
- them properly results in:</para>
|
|
|
|
|
|
+ them properly results in:</para-->
|
|
|
|
+ <para>下面给出的基本 <filename>/etc/profile</filename>
|
|
|
|
+ 设定本地语言支持需要的环境变量,正确设定它们有以下好处:</para>
|
|
|
|
|
|
<itemizedlist>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<listitem>
|
|
- <para>The output of programs translated into the native language</para>
|
|
|
|
|
|
+ <para>程序输出被翻译成本地语言</para>
|
|
</listitem>
|
|
</listitem>
|
|
<listitem>
|
|
<listitem>
|
|
- <para>Correct classification of characters into letters, digits and other
|
|
|
|
- classes. This is necessary for <command>bash</command> to properly accept
|
|
|
|
- non-ASCII characters in command lines in non-English locales</para>
|
|
|
|
|
|
+ <para>字符被正确分类为字母、数字和其他类别,
|
|
|
|
+ 这对于使 <command>bash</command> 正确接受命令行中的非 ASCII
|
|
|
|
+ 本地字符来说是必要的</para>
|
|
</listitem>
|
|
</listitem>
|
|
<listitem>
|
|
<listitem>
|
|
- <para>The correct alphabetical sorting order for the country</para>
|
|
|
|
|
|
+ <para>根据所在地区惯例排序字母</para>
|
|
</listitem>
|
|
</listitem>
|
|
<listitem>
|
|
<listitem>
|
|
- <para>Appropriate default paper size</para>
|
|
|
|
|
|
+ <para>适用于所在地区的默认纸张尺寸</para>
|
|
</listitem>
|
|
</listitem>
|
|
<listitem>
|
|
<listitem>
|
|
- <para>Correct formatting of monetary, time, and date values</para>
|
|
|
|
|
|
+ <para>正确格式化货币、时间和日期值</para>
|
|
</listitem>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</itemizedlist>
|
|
|
|
|
|
- <para>Replace <replaceable><ll></replaceable> below with the two-letter code
|
|
|
|
- for the desired language (e.g., <quote>en</quote>) and
|
|
|
|
- <replaceable><CC></replaceable> with the two-letter code for the appropriate
|
|
|
|
- country (e.g., <quote>GB</quote>). <replaceable><charmap></replaceable> should
|
|
|
|
- be replaced with the canonical charmap for your chosen locale. Optional
|
|
|
|
- modifiers such as <quote>@euro</quote> may also be present.</para>
|
|
|
|
-
|
|
|
|
- <para>The list of all locales supported by Glibc can be obtained by running
|
|
|
|
- the following command:</para>
|
|
|
|
|
|
+ <note><title>译注</title>
|
|
|
|
+ <para>译者强烈反对在 <filename>/etc/profile</filename>
|
|
|
|
+ 中指定中文 locale。由于字符终端的局限性,它根本无法显示中文字符。
|
|
|
|
+ 使用中文 locale 将导致许多程序输出中文消息,
|
|
|
|
+ 结果在字符终端中都显示为问号。建议在
|
|
|
|
+ <filename>/etc/locale.conf</filename> 中指定英文 locale ,
|
|
|
|
+ 在 BLFS 中安装了图形环境后再将
|
|
|
|
+ <literal>LANG=zh_CN.UTF-8</literal> 写入
|
|
|
|
+ <filename>.xprofile</filename> 等图形界面配置文件,
|
|
|
|
+ 这样即可在字符终端中使用英文 locale ,而在图形界面中使用中文。
|
|
|
|
+ </para>
|
|
|
|
+ </note>
|
|
|
|
+
|
|
|
|
+ <para>将下面的 <replaceable><ll></replaceable>
|
|
|
|
+ 替换为所需语言的双字符代号(例如 <quote>en</quote>),
|
|
|
|
+ <replaceable><CC></replaceable> 替换为国家或地区的双字符代号
|
|
|
|
+ (例如 <quote>GB</quote>),
|
|
|
|
+ <replaceable><charmap></replaceable> 替换为您选定的 locale
|
|
|
|
+ 的标准字符映射。另外,还可以加入 <quote>@euro</quote>
|
|
|
|
+ 之类的可选修饰符。</para>
|
|
|
|
+
|
|
|
|
+ <para>Glibc 支持的所有 locale 可以用以下命令列出:</para>
|
|
|
|
|
|
<screen role="nodump"><userinput>locale -a</userinput></screen>
|
|
<screen role="nodump"><userinput>locale -a</userinput></screen>
|
|
|
|
|
|
- <para>Charmaps can have a number of aliases, e.g., <quote>ISO-8859-1</quote>
|
|
|
|
- is also referred to as <quote>iso8859-1</quote> and <quote>iso88591</quote>.
|
|
|
|
- Some applications cannot handle the various synonyms correctly (e.g., require
|
|
|
|
- that <quote>UTF-8</quote> is written as <quote>UTF-8</quote>, not
|
|
|
|
- <quote>utf8</quote>), so it is safest in most
|
|
|
|
- cases to choose the canonical name for a particular locale. To determine
|
|
|
|
- the canonical name, run the following command, where <replaceable><locale
|
|
|
|
- name></replaceable> is the output given by <command>locale -a</command> for
|
|
|
|
- your preferred locale (<quote>en_GB.iso88591</quote> in our example).</para>
|
|
|
|
|
|
+ <para>字符映射可能有多个别名,例如 <quote>ISO-8859-1</quote>
|
|
|
|
+ 也可以称为 <quote>iso8859-1</quote> 和 <quote>iso88591</quote>。
|
|
|
|
+ 某些程序不能正确处理一些别名(例如,只识别 <quote>UTF-8</quote>,
|
|
|
|
+ 不能识别 <quote>utf8</quote>),因此在多数情况下,为了保险起见,
|
|
|
|
+ 最好使用 locale 的规范名称。为了确定规范名称,执行下列命令,
|
|
|
|
+ 将 <replaceable><locale name></replaceable> 替换成
|
|
|
|
+ <command>locale -a</command> 对于您希望的 locale 的输出
|
|
|
|
+ (以 <quote>en_GB.iso88591</quote> 为例)。</para>
|
|
|
|
|
|
<screen role="nodump"><userinput>LC_ALL=<replaceable><locale name></replaceable> locale charmap</userinput></screen>
|
|
<screen role="nodump"><userinput>LC_ALL=<replaceable><locale name></replaceable> locale charmap</userinput></screen>
|
|
|
|
|
|
- <para>For the <quote>en_GB.iso88591</quote> locale, the above command
|
|
|
|
- will print:</para>
|
|
|
|
|
|
+ <para>对于 <quote>en_GB.iso88591</quote> locale,以上命令输出:</para>
|
|
|
|
|
|
<screen><computeroutput>ISO-8859-1</computeroutput></screen>
|
|
<screen><computeroutput>ISO-8859-1</computeroutput></screen>
|
|
|
|
|
|
- <para>This results in a final locale setting of <quote>en_GB.ISO-8859-1</quote>.
|
|
|
|
- It is important that the locale found using the heuristic above is tested prior
|
|
|
|
- to it being added to the Bash startup files:</para>
|
|
|
|
|
|
+ <para>这样就最终确定 locale 应设置为 <quote>en_GB.ISO-8859-1</quote>。
|
|
|
|
+ 在将以上启发方法获得的 locale 添加到 Bash 启动文件之前,
|
|
|
|
+ 一定要进行下列测试:</para>
|
|
|
|
|
|
<screen role="nodump"><userinput>LC_ALL=<locale name> locale language
|
|
<screen role="nodump"><userinput>LC_ALL=<locale name> locale language
|
|
LC_ALL=<locale name> locale charmap
|
|
LC_ALL=<locale name> locale charmap
|
|
LC_ALL=<locale name> locale int_curr_symbol
|
|
LC_ALL=<locale name> locale int_curr_symbol
|
|
LC_ALL=<locale name> locale int_prefix</userinput></screen>
|
|
LC_ALL=<locale name> locale int_prefix</userinput></screen>
|
|
|
|
|
|
- <para>The above commands should print the language name, the character
|
|
|
|
|
|
+ <!--para>The above commands should print the language name, the character
|
|
encoding used by the locale, the local currency, and the prefix to dial
|
|
encoding used by the locale, the local currency, and the prefix to dial
|
|
before the telephone number in order to get into the country. If any of the
|
|
before the telephone number in order to get into the country. If any of the
|
|
commands above fail with a message similar to the one shown below, this means
|
|
commands above fail with a message similar to the one shown below, this means
|
|
that your locale was either not installed in Chapter 6 or is not supported by
|
|
that your locale was either not installed in Chapter 6 or is not supported by
|
|
- the default installation of Glibc.</para>
|
|
|
|
|
|
+ the default installation of Glibc.</para-->
|
|
|
|
+ <para>以上命令应该输出语言名称、选定 locale 使用的字符编码、
|
|
|
|
+ 本地货币符号以及所在国家或地区的国际电话区号。
|
|
|
|
+ 如果以上某个命令失败并输出类似下面这样的消息,
|
|
|
|
+ 意味着您的 locale 在第 6 章中没有安装,或者不被 Glibc 的默认安装支持。
|
|
|
|
+ </para>
|
|
|
|
|
|
<screen><computeroutput>locale: Cannot set LC_* to default locale: No such file or directory</computeroutput></screen>
|
|
<screen><computeroutput>locale: Cannot set LC_* to default locale: No such file or directory</computeroutput></screen>
|
|
|
|
|
|
- <para>If this happens, you should either install the desired locale using the
|
|
|
|
|
|
+ <!--para>If this happens, you should either install the desired locale using the
|
|
<command>localedef</command> command, or consider choosing a different locale.
|
|
<command>localedef</command> command, or consider choosing a different locale.
|
|
Further instructions assume that there are no such error messages from
|
|
Further instructions assume that there are no such error messages from
|
|
- Glibc.</para>
|
|
|
|
|
|
+ Glibc.</para-->
|
|
|
|
+ <para>如果出现了这种消息,您应该用 <command>localedef</command>
|
|
|
|
+ 命令安装所需的 locale ,或重新选择一个不同的 locale 。
|
|
|
|
+ 后文假设 Glibc 没有输出类似错误消息。</para>
|
|
|
|
|
|
<!-- FIXME: the xlib example will became obsolete real soon -->
|
|
<!-- FIXME: the xlib example will became obsolete real soon -->
|
|
- <para>Some packages beyond LFS may also lack support for your chosen locale. One
|
|
|
|
|
|
+ <!--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
|
|
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
|
|
following error message if the locale does not exactly match one of the character
|
|
- map names in its internal files:</para>
|
|
|
|
|
|
+ map names in its internal files:</para-->
|
|
|
|
+ <para>某些 LFS 以外的软件包可能缺乏对您选择的 locale 的支持,
|
|
|
|
+ 例如 X 库(X 窗口系统的一部分),它在您的 locale
|
|
|
|
+ 与它内部文件中的字符映射表名不完全匹配时,会输出以下错误消息:</para>
|
|
|
|
|
|
<screen><computeroutput>Warning: locale not supported by Xlib, locale set to C</computeroutput></screen>
|
|
<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
|
|
|
|
|
|
+ <!--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
|
|
uppercase notation with canonical dashes. For instance, "ISO-8859-1" rather
|
|
than "iso88591". It is also possible to find an appropriate specification by
|
|
than "iso88591". It is also possible to find an appropriate specification by
|
|
removing the charmap part of the locale specification. This can be checked
|
|
removing the charmap part of the locale specification. This can be checked
|
|
by running the <command>locale charmap</command> command in both locales.
|
|
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
|
|
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>Other packages can also function incorrectly (but may not necessarily
|
|
|
|
|
|
+ "de_DE@euro" in order to get this locale recognized by Xlib.</para-->
|
|
|
|
+ <para>某些情况下 Xlib 期望字符映射以带有规范连字符的大写形式给出,
|
|
|
|
+ 例如应该使用 <quote>ISO-8859-1</quote> 而不是
|
|
|
|
+ <quote>iso88591</quote>。
|
|
|
|
+ 有时也可以通过去除 locale 规范中的字符映射部分找到合适的规范,
|
|
|
|
+ 可以通过运行 <command>locale charmap</command> 确认。
|
|
|
|
+ 例如,您需要将 <quote>de_DE.ISO-8859-15@euro</quote>
|
|
|
|
+ 替换成 <quote>de_DE@euro</quote>,以获得 Xlib 能够识别的 locale。
|
|
|
|
+ </para>
|
|
|
|
+
|
|
|
|
+ <!--para>Other packages can also function incorrectly (but may not necessarily
|
|
display any error messages) if the locale name does not meet their expectations.
|
|
display any error messages) if the locale name does not meet their expectations.
|
|
In those cases, investigating how other Linux distributions support your locale
|
|
In those cases, investigating how other Linux distributions support your locale
|
|
- might provide some useful information.</para>
|
|
|
|
|
|
+ might provide some useful information.</para-->
|
|
|
|
+ <para>其他软件包在 locale 名不符合它们的期望时可能工作不正常
|
|
|
|
+ (但未必输出错误消息)。在这种情况下,探索一下其他 Linux
|
|
|
|
+ 发行版是如何支持您的 locale 的,可以得到一些有用的信息。</para>
|
|
|
|
|
|
- <para>Once the proper locale settings have been determined, create the
|
|
|
|
- <filename>/etc/profile</filename> file:</para>
|
|
|
|
|
|
+ <para>在确定了正确的 locale 设置后,创建
|
|
|
|
+ <filename>/etc/profile</filename> 文件:</para>
|
|
|
|
|
|
<screen><userinput>cat > /etc/profile << "EOF"
|
|
<screen><userinput>cat > /etc/profile << "EOF"
|
|
<literal># Begin /etc/profile
|
|
<literal># Begin /etc/profile
|
|
@@ -145,7 +197,7 @@ export LANG=<replaceable><ll>_<CC>.<charmap><@modifiers>
|
|
# End /etc/profile</literal>
|
|
# End /etc/profile</literal>
|
|
EOF</userinput></screen>
|
|
EOF</userinput></screen>
|
|
|
|
|
|
- <para>The <quote>C</quote> (default) and <quote>en_US</quote> (the recommended
|
|
|
|
|
|
+ <!--para>The <quote>C</quote> (default) and <quote>en_US</quote> (the recommended
|
|
one for United States English users) locales are different. <quote>C</quote>
|
|
one for United States English users) locales are different. <quote>C</quote>
|
|
uses the US-ASCII 7-bit character set, and treats bytes with the high bit set
|
|
uses the US-ASCII 7-bit character set, and treats bytes with the high bit set
|
|
as invalid characters. That's why, e.g., the <command>ls</command> command
|
|
as invalid characters. That's why, e.g., the <command>ls</command> command
|
|
@@ -153,10 +205,19 @@ EOF</userinput></screen>
|
|
mail with such characters from Mutt or Pine results in non-RFC-conforming
|
|
mail with such characters from Mutt or Pine results in non-RFC-conforming
|
|
messages being sent (the charset in the outgoing mail is indicated as <quote>unknown
|
|
messages being sent (the charset in the outgoing mail is indicated as <quote>unknown
|
|
8-bit</quote>). So you can use the <quote>C</quote> locale only if you are sure that
|
|
8-bit</quote>). So you can use the <quote>C</quote> locale only if you are sure that
|
|
- you will never need 8-bit characters.</para>
|
|
|
|
-
|
|
|
|
- <para>UTF-8 based locales are not supported well by some programs.
|
|
|
|
- Work is in progress to document and, if possible, fix such problems, see
|
|
|
|
- <ulink url="&blfs-book;introduction/locale-issues.html"/>.</para>
|
|
|
|
|
|
+ you will never need 8-bit characters.</para-->
|
|
|
|
+ <para><quote>C</quote> (默认 locale)和 <quote>en_US</quote>
|
|
|
|
+ (推荐美式英语用户使用的 locale)是不同的。
|
|
|
|
+ <quote>C</quote> locale 使用 US-ASCII 7 位字符集,并且将最高位为 1
|
|
|
|
+ 的字节视为无效字符。因此,<command>ls</command>
|
|
|
|
+ 等命令会将它们替换为问号。另外,如果试图用 Mutt 或 Pine
|
|
|
|
+ 发送包含这些字符的邮件,会发出不符合 RFC 标准的消息
|
|
|
|
+ (发出邮件的字符集会被标为 <quote>未知 8 位</quote>)。
|
|
|
|
+ 因此,您只能在确信自己永远不会使用 8 位字符时才能使用
|
|
|
|
+ <quote>C</quote> locale。</para>
|
|
|
|
+
|
|
|
|
+ <para>许多程序不能很好地支持基于 UTF-8 的 locale,
|
|
|
|
+ 我们正在努力记录并(如果可能的话)修复它们,参阅
|
|
|
|
+ <ulink url="&blfs-book;introduction/locale-issues.html"/>。</para>
|
|
|
|
|
|
</sect1>
|
|
</sect1>
|