aboutsummaryrefslogtreecommitdiffstats
path: root/chapter07/profile.xml
diff options
context:
space:
mode:
Diffstat (limited to 'chapter07/profile.xml')
-rw-r--r--chapter07/profile.xml78
1 files changed, 78 insertions, 0 deletions
diff --git a/chapter07/profile.xml b/chapter07/profile.xml
new file mode 100644
index 000000000..c9f6e16a4
--- /dev/null
+++ b/chapter07/profile.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+ <!ENTITY % general-entities SYSTEM "../general.ent">
+ %general-entities;
+]>
+<sect1 id="ch-scripts-profile">
+<title>The Bash Shell Startup Files</title>
+<?dbhtml filename="profile.html"?>
+
+<para>The shell program <filename>/bin/bash</filename> (hereafter
+referred to as just "the shell") uses a collection of startup files to
+help 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 class="directory">/etc</filename> directory generally provide global
+settings. If an equivalent file exists in your home directory it may
+override the global settings.
+</para>
+
+<para>An interactive login shell is started after a successful login, using
+<filename>/bin/login</filename>, by reading the
+<filename>/etc/passwd</filename> file. An
+interactive non-login shell is started at the command-line (e.g.
+<prompt>[prompt]$</prompt><command>/bin/bash</command>). A 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
+commands.</para>
+
+<para>For more information see <command>info bash</command> --
+<emphasis role="strong">Nodes: 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 invoked
+as an interactive login shell.</para>
+
+<para>A base <filename>/etc/profile</filename> created below only sets some
+environment variables necessary for Bash to accept keystrokes properly,
+even in non-English locale. Replace "ll" with the
+two-letter code for your language (e.g. "en") and
+"CC" with the two-letter code for your country
+(e.g. "GB"). Also you may need to specify
+(and this is actually the preferred form) your
+character encoding (e.g. "iso8859-1") after a dot (so that the result
+is "en_GB.iso8859-1").
+Issue the following command for more information:</para>
+
+<screen><userinput>man 3 setlocale</userinput></screen>
+
+<para>The list of all locales supported by glibc can be obtained by running
+the following command:</para>
+
+<screen><userinput>locale -a</userinput></screen>
+
+<para>Now, when you are sure about your locale settings, create the
+<filename>/etc/profile</filename> file:</para>
+<screen><userinput>cat &gt; /etc/profile &lt;&lt; "EOF"
+# Begin /etc/profile
+# Written for Linux From Scratch
+# by Alexander E. Patrakov
+
+export LC_ALL=ll_CC
+export LANG=ll_CC
+export INPUTRC=/etc/inputrc
+
+# End /etc/profile
+EOF</userinput></screen>
+
+<para>Setting the keyboard layout,
+the screen font and the locale-related environment variables
+are the only internationalization steps needed to support
+locales that use ordinary single-byte encodings and left-to-right
+writing direction. More complex cases (including UTF-8 based locales)
+require additional steps and additional patches because many applications
+tend to break in such conditions. Because of too little educational
+value for a typical reader, these steps and patches are not included
+in the LFS book and such locales are not supported by LFS in any way.
+</para>
+</sect1>