Changeset d781ffb for chapter07/profile.xml
- Timestamp:
- 12/18/2005 06:31:04 PM (18 years ago)
- Branches:
- 10.0, 10.0-rc1, 10.1, 10.1-rc1, 11.0, 11.0-rc1, 11.0-rc2, 11.0-rc3, 11.1, 11.1-rc1, 11.2, 11.2-rc1, 11.3, 11.3-rc1, 12.0, 12.0-rc1, 12.1, 12.1-rc1, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.5-systemd, 7.6, 7.6-systemd, 7.7, 7.7-systemd, 7.8, 7.8-systemd, 7.9, 7.9-systemd, 8.0, 8.1, 8.2, 8.3, 8.4, 9.0, 9.1, arm, bdubbs/gcc13, ml-11.0, multilib, renodr/libudev-from-systemd, s6-init, trunk, xry111/arm64, xry111/arm64-12.0, xry111/clfs-ng, xry111/lfs-next, xry111/loongarch, xry111/loongarch-12.0, xry111/loongarch-12.1, xry111/mips64el, xry111/pip3, xry111/rust-wip-20221008, xry111/update-glibc
- Children:
- faaf88e
- Parents:
- b78c747
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter07/profile.xml
rb78c747 rd781ffb 1 1 <?xml version="1.0" encoding="ISO-8859-1"?> 2 <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ 2 <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" 3 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ 3 4 <!ENTITY % general-entities SYSTEM "../general.ent"> 4 5 %general-entities; 5 6 ]> 7 6 8 <sect1 id="ch-scripts-profile"> 7 <title>The Bash Shell Startup Files</title> 8 <?dbhtml filename="profile.html"?> 9 <?dbhtml filename="profile.html"?> 9 10 10 <indexterm zone="ch-scripts-profile"><primary sortas="e-/etc/profile">/etc/profile</primary></indexterm>11 <title>The Bash Shell Startup Files</title> 11 12 12 <para>The shell program <command>/bin/bash</command> (hereafter 13 referred to as <quote>the shell</quote>) uses a collection of startup 14 files to help create an environment to run in. Each file has a 15 specific use and may affect login and interactive environments 16 differently. The files in the <filename 17 class="directory">/etc</filename> directory provide global settings. 18 If an equivalent file exists in the home directory, it may override 19 the global settings.</para> 13 <indexterm zone="ch-scripts-profile"> 14 <primary sortas="e-/etc/profile">/etc/profile</primary> 15 </indexterm> 20 16 21 <para>An interactive login shell is started after a successful login, 22 using <command>/bin/login</command>, by reading the 23 <filename>/etc/passwd</filename> file. An interactive non-login shell 24 is started at the command-line (e.g., 25 <prompt>[prompt]$</prompt><command>/bin/bash</command>). A 26 non-interactive shell is usually present when a shell script is 27 running. It is non-interactive because it is processing a script and 28 not waiting for user input between commands.</para> 17 <para>The shell program <command>/bin/bash</command> (hereafter referred to 18 as <quote>the shell</quote>) uses a collection of startup files to help 19 create an environment to run in. Each file has a specific use and may affect 20 login and interactive environments differently. The files in the <filename 21 class="directory">/etc</filename> directory provide global settings. If an 22 equivalent file exists in the home directory, it may override the global 23 settings.</para> 29 24 30 <para>For more information, see <command>info bash</command> under the 31 <emphasis>Bash Startup Files and Interactive Shells</emphasis> section.</para> 25 <para>An interactive login shell is started after a successful login, using 26 <command>/bin/login</command>, by reading the <filename>/etc/passwd</filename> 27 file. An interactive non-login shell is started at the command-line (e.g., 28 <prompt>[prompt]$</prompt><command>/bin/bash</command>). A non-interactive 29 shell is usually present when a shell script is running. It is non-interactive 30 because it is processing a script and not waiting for user input between 31 commands.</para> 32 32 33 <para>The files <filename>/etc/profile</filename> and 34 <filename>~/.bash_profile</filename> are read when the shell is 35 invoked as an interactive login shell.</para> 33 <para>For more information, see <command>info bash</command> under the 34 <emphasis>Bash Startup Files and Interactive Shells</emphasis> section.</para> 36 35 37 <para>The base <filename>/etc/profile</filename> below sets some 38 environment variables necessary for native language support. Setting 39 them properly results in:</para>36 <para>The files <filename>/etc/profile</filename> and 37 <filename>~/.bash_profile</filename> are read when the shell is 38 invoked as an interactive login shell.</para> 40 39 41 <itemizedlist> 42 <listitem><para>The output of programs translated into the native 43 language</para></listitem> 44 <listitem><para>Correct classification of characters into letters, digits and 45 other classes. This is necessary for <command>bash</command> to properly accept 46 non-ASCII characters in command lines in non-English locales</para></listitem> 47 <listitem><para>The correct alphabetical sorting order for the 48 country</para></listitem> 49 <listitem><para>Appropriate default paper size</para></listitem> 50 <listitem><para>Correct formatting of monetary, time, and date 51 values</para></listitem> 52 </itemizedlist> 40 <para>The base <filename>/etc/profile</filename> below sets some 41 environment variables necessary for native language support. Setting 42 them properly results in:</para> 53 43 54 <para>This script also sets the <envar>INPUTRC</envar> environment variable that 55 makes Bash and Readline use the <filename>/etc/inputrc</filename> file created 56 earlier.</para> 44 <itemizedlist> 45 <listitem> 46 <para>The output of programs translated into the native language</para> 47 </listitem> 48 <listitem> 49 <para>Correct classification of characters into letters, digits and other 50 classes. This is necessary for <command>bash</command> to properly accept 51 non-ASCII characters in command lines in non-English locales</para> 52 </listitem> 53 <listitem> 54 <para>The correct alphabetical sorting order for the country</para> 55 </listitem> 56 <listitem> 57 <para>Appropriate default paper size</para> 58 </listitem> 59 <listitem> 60 <para>Correct formatting of monetary, time, and date values</para> 61 </listitem> 62 </itemizedlist> 57 63 58 <para>Replace <replaceable>[ll]</replaceable> below with the 59 two-letter code for the desired language (e.g., <quote>en</quote>) and 60 <replaceable>[CC]</replaceable> with the two-letter code for the 61 appropriate country (e.g., <quote>GB</quote>). 62 <replaceable>[charmap]</replaceable> should be replaced with the 63 canonical charmap for your chosen locale.</para> 64 <para>This script also sets the <envar>INPUTRC</envar> environment variable that 65 makes Bash and Readline use the <filename>/etc/inputrc</filename> file created 66 earlier.</para> 64 67 65 <para>The list of all locales supported by Glibc can be obtained by running 66 the following command:</para> 68 <para>Replace <replaceable>[ll]</replaceable> below with the two-letter code 69 for the desired language (e.g., <quote>en</quote>) and 70 <replaceable>[CC]</replaceable> with the two-letter code for the appropriate 71 country (e.g., <quote>GB</quote>). <replaceable>[charmap]</replaceable> should 72 be replaced with the canonical charmap for your chosen locale.</para> 73 74 <para>The list of all locales supported by Glibc can be obtained by running 75 the following command:</para> 67 76 68 77 <screen role="nodump"><userinput>locale -a</userinput></screen> 69 78 70 <para>Locales can have a number of synonyms, e.g. <quote>ISO-8859-1</quote> is 71 also referred to as <quote>iso8859-1</quote> and <quote>iso88591</quote>. 72 Some applications cannot handle the various synonyms correctly, so it is safest 73 to choose the canonical name for a particular locale. To determine the 74 canonical name, run the following command, where 75 <replaceable>[locale name]</replaceable> is the output given by 76 <command>locale -a</command> for your preferred locale 77 (<quote>en_GB.iso88591</quote> in our example).</para> 79 <para>Locales can have a number of synonyms, e.g. <quote>ISO-8859-1</quote> 80 is also referred to as <quote>iso8859-1</quote> and <quote>iso88591</quote>. 81 Some applications cannot handle the various synonyms correctly, so it is 82 safest to choose the canonical name for a particular locale. To determine 83 the canonical name, run the following command, where <replaceable>[locale 84 name]</replaceable> is the output given by <command>locale -a</command> for 85 your preferred locale (<quote>en_GB.iso88591</quote> in our example).</para> 78 86 79 87 <screen role="nodump"><userinput>LC_ALL=<replaceable>[locale name]</replaceable> locale charmap</userinput></screen> 80 88 81 <para>For the <quote>en_GB.iso88591</quote> locale, the above command82 will print:</para>89 <para>For the <quote>en_GB.iso88591</quote> locale, the above command 90 will print:</para> 83 91 84 <screen> ISO-8859-1</screen>92 <screen><computeroutput>ISO-8859-1</computeroutput></screen> 85 93 86 <para>This results in a final locale setting of <quote>en_GB.ISO-8859-1</quote>.87 It is important that the locale found using the heuristic above is tested prior88 to it being added to the Bash startup files:</para>94 <para>This results in a final locale setting of <quote>en_GB.ISO-8859-1</quote>. 95 It is important that the locale found using the heuristic above is tested prior 96 to it being added to the Bash startup files:</para> 89 97 90 98 <screen role="nodump"><userinput>LC_ALL=[locale name] locale country … … 94 102 LC_ALL=[locale name] locale int_prefix</userinput></screen> 95 103 96 <para>The above commands should print the country and language names, the97 character encoding used by the locale, the local currency and the prefix to dial98 before the telephone number in order to get into the country. If any of the99 commands above fail with a message similar to the one shown below, this means100 that your locale was either not installed in Chapter 6 or is not supported by101 the default installation of Glibc.</para>104 <para>The above commands should print the country and language names, the 105 character encoding used by the locale, the local currency and the prefix to dial 106 before the telephone number in order to get into the country. If any of the 107 commands above fail with a message similar to the one shown below, this means 108 that your locale was either not installed in Chapter 6 or is not supported by 109 the default installation of Glibc.</para> 102 110 103 111 <screen><computeroutput>locale: Cannot set LC_* to default locale: No such file or directory</computeroutput></screen> 104 112 105 <para>If this happens, you should either install the desired locale using the <command>localedef</command> command, or consider choosing a different locale. 106 Further instructions assume that there are no such error messages from Glibc. 107 </para> 113 <para>If this happens, you should either install the desired locale using the 114 <command>localedef</command> command, or consider choosing a different locale. 115 Further instructions assume that there are no such error messages from 116 Glibc.</para> 108 117 109 <para>Some packages beyond LFS may also lack support for your chosen locale. One110 example is the X library (part of the X Window System), which outputs the111 following error message:</para>118 <para>Some packages beyond LFS may also lack support for your chosen locale. One 119 example is the X library (part of the X Window System), which outputs the 120 following error message:</para> 112 121 113 122 <screen><computeroutput>Warning: locale not supported by Xlib, locale set to C</computeroutput></screen> 114 123 115 <para>Sometimes it is possible to fix this by removing the charmap part of the116 locale specification, as long as that does not change the character map that117 Glibc associates with the locale (this can be checked by running the118 <command>locale charmap</command> command in both locales). For example, one119 would have to change "de_DE.ISO-8859-15@euro" to120 "de_DE@euro" in order to get this locale recognized by Xlib.</para>124 <para>Sometimes it is possible to fix this by removing the charmap part of the 125 locale specification, as long as that does not change the character map that 126 Glibc associates with the locale (this can be checked by running the 127 <command>locale charmap</command> command in both locales). For example, one 128 would have to change "de_DE.ISO-8859-15@euro" to 129 "de_DE@euro" in order to get this locale recognized by Xlib.</para> 121 130 122 <para>Other packages can also function incorrectly (but may not necessarily123 display any error messages) if the locale name does not meet their expectations.124 In those cases, investigating how other Linux distributions support your locale125 might provide some useful information.</para>131 <para>Other packages can also function incorrectly (but may not necessarily 132 display any error messages) if the locale name does not meet their expectations. 133 In those cases, investigating how other Linux distributions support your locale 134 might provide some useful information.</para> 126 135 127 <para>Once the proper locale settings have been determined, create the128 <filename>/etc/profile</filename> file:</para>136 <para>Once the proper locale settings have been determined, create the 137 <filename>/etc/profile</filename> file:</para> 129 138 130 139 <screen><userinput>cat > /etc/profile << "EOF" … … 137 146 EOF</userinput></screen> 138 147 139 <note><para>The <quote>C</quote> (default) and <quote>en_US</quote> 140 (the recommended one for United States English users) locales are 141 different.</para></note> 148 <note> 149 <para>The <quote>C</quote> (default) and <quote>en_US</quote> (the 150 recommended one for United States English users) locales are different.</para> 151 </note> 142 152 143 <para>Setting the keyboard layout, screen font, and 144 locale-related environment variables are the only internationalization 145 steps needed to support locales that use ordinary single-byte 146 encodings and left-to-right writing direction. More complex cases 147 (including UTF-8 based locales) require additional steps and 148 additional patches because many applications tend to not work properly 149 under such conditions. These steps and patches are not included in 150 the LFS book and such locales are not yet supported by LFS.</para> 153 <para>Setting the keyboard layout, screen font, and locale-related environment 154 variables are the only internationalization steps needed to support locales 155 that use ordinary single-byte encodings and left-to-right writing direction. 156 More complex cases (including UTF-8 based locales) require additional steps 157 and additional patches because many applications tend to not work properly 158 under such conditions. These steps and patches are not included in the LFS 159 book and such locales are not yet supported by LFS.</para> 151 160 152 161 </sect1> 153
Note:
See TracChangeset
for help on using the changeset viewer.