Ignore:
Timestamp:
02/19/2005 10:16:42 PM (19 years ago)
Author:
Gerard Beekmans <gerard@…>
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.1, 6.1.1, 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:
3d31fc4
Parents:
2f9131f
Message:

Trunk is now identical to Testing

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@4648 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chapter04/settingenviron.xml

    r2f9131f r81fd230  
    88<?dbhtml filename="settingenvironment.html"?>
    99
     10<para>Set up a good working environment by creating two new startup
     11files for the <command>bash</command> shell. While logged in as user
     12<emphasis>lfs</emphasis>, issue the
     13following command to create a new <filename>.bash_profile</filename>:</para>
     14
    1015<screen><userinput>cat &gt; ~/.bash_profile &lt;&lt; "EOF"
    1116<literal>exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash</literal>
    1217EOF</userinput></screen>
     18
     19<para>When logged on as user <emphasis>lfs</emphasis>, the
     20initial shell is usually a <emphasis>login</emphasis> shell which reads the
     21<filename>/etc/profile</filename> of the host (probably containing
     22some settings and environment variables) and then
     23<filename>.bash_profile</filename>. The <command>exec env
     24-i.../bin/bash</command> command in the
     25<filename>.bash_profile</filename> file replaces the running shell
     26with a new one with a completely empty environment, except for the
     27<envar>HOME</envar>, <envar>TERM</envar>, and
     28<envar>PS1</envar> variables. This ensures that no unwanted and
     29potentially hazardous environment variables from the host system leak
     30into the build environment. The technique used here achieves the goal
     31of ensuring a clean environment.</para>
     32
     33<para>The new instance of the shell is a <emphasis>non-login</emphasis>
     34shell, which does not read the <filename>/etc/profile</filename> or
     35<filename>.bash_profile</filename> files, but rather reads the
     36<filename>.bashrc</filename> file instead. Create the
     37<filename>.bashrc</filename> file now:</para>
    1338
    1439<screen><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
     
    2146EOF</userinput></screen>
    2247
     48<para>The <command>set +h</command> command turns off
     49<command>bash</command>'s hash function. Hashing is ordinarily a useful
     50feature&mdash;<command>bash</command> uses a hash table to remember the
     51full path of executable files to avoid searching the <envar>PATH</envar> time
     52and again to find the same executable. However, the new tools
     53should be used as soon as they are installed. By switching off the
     54hash function, the shell will always search the <envar>PATH</envar> when a program is
     55to be run. As such, the shell will find the newly compiled
     56tools in <filename class="directory">$LFS/tools</filename> as soon as
     57they are available without remembering a previous version of the same
     58program in a different location.</para>
     59
     60<para>Setting the user file-creation mask (umask) to 022 ensures that newly
     61created files and directories are only writable by their owner, but
     62are readable and executable by anyone (assuming default modes are used
     63by the open(2) system call, new files will end up with permission mode
     64644 and directories with mode 755).</para>
     65
     66<para>The <envar>LFS</envar> variable should be set to the
     67chosen mount point.</para>
     68
     69<para>The <envar>LC_ALL</envar> variable controls the
     70localization of certain programs, making their messages follow the
     71conventions of a specified country.  If the host system uses a version
     72of Glibc older than 2.2.4, having <envar>LC_ALL</envar> set to something other than
     73<quote>POSIX</quote> or <quote>C</quote> (during this chapter) may
     74cause issues if you exit the chroot environment and wish to return
     75later. Setting <envar>LC_ALL</envar> to <quote>POSIX</quote>
     76or <quote>C</quote> (the two are equivalent) ensures that
     77everything will work as expected in the chroot environment.</para>
     78
     79<para>By putting <filename class="directory">/tools/bin</filename>
     80ahead of the standard <envar>PATH</envar>, all the programs installed in <xref
     81linkend="chapter-temporary-tools"/> are picked up by the shell
     82immediately after their installation. This, combined with turning off
     83hashing, limits the risk that old programs from
     84the host are being used when they should not be used any
     85longer.</para>
     86
     87<para>Finally, to have the environment fully prepared for building the
     88temporary tools, source the just-created user profile:</para>
     89
    2390<screen><userinput>source ~/.bash_profile</userinput></screen>
    2491
    2592</sect1>
     93
Note: See TracChangeset for help on using the changeset viewer.