📄 settingenvironment.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=gb2312" />
<title>
4.4. Setting Up the Environment
</title>
<link rel="stylesheet" href="../stylesheets/lfs.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1" />
<link rel="stylesheet" href="../stylesheets/lfs-print.css" type="text/css" media="print" />
</head>
<body id="lfs" class="6.1">
<div class="navheader">
<div class="headertitles">
<h4>
Linux From Scratch - Version 6.1
</h4>
<h3>
Chapter 4. 最后的准备工作
</h3>
</div>
<ul class="headerlinks">
<li class="prev">
<a accesskey="p" href="addinguser.html" title="Adding the LFS User">后退</a>
<p>
Adding the LFS User
</p>
</li>
<li class="next">
<a accesskey="n" href="aboutsbus.html" title="About SBUs">前进</a>
<p>
About SBUs
</p>
</li>
<li class="up">
<a accesskey="u" href="chapter04.html" title="Chapter 4. 最后的准备工作">上一级</a>.
</li>
<li class="home">
<a accesskey="h" href="../index.html" title="Linux From Scratch - Version 6.1">回首页</a>
</li>
</ul>
</div>
<div class="sect1" lang="zh_cn" xml:lang="zh_cn">
<div class="titlepage">
<h1 class="sect1">
4.4. 设置工作环境
</h1>
</div>
<p>给 <span><strong class="command">bash</strong></span> shell 创建两个启动文件来设置好工作环境。用 <span class="emphasis"><em>lfs</em></span> 用户登录,输入下面的命令来创建一个新的 <tt class="filename">.bash_profile</tt> 文件:
</p>
<pre class="userinput"><kbd class="command">cat > ~/.bash_profile << "EOF"
<tt class="literal">exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash</tt>
EOF</kbd></pre>
<p>作为用户 <span class="emphasis"><em>lfs</em></span> 登录的时候,初始 shell 通常是一个<span class="emphasis"><em>登陆</em></span> shell,它会首先读取宿主系统的 <tt class="filename">/etc/profile</tt> 文件(可能包含一些设置和环境变量),然后读取 <tt class="filename">.bash_profile</tt> 文件来完成登录初始化。<tt class="filename">.bash_profile</tt> 文件中的 <span><strong class="command">exec env -i.../bin/bash</strong></span> 命令用完全空的环境来取代当前运行的 shell 环境,除了<tt class="envar">HOME</tt>, <tt class="envar">TERM</tt>, <tt class="envar">PS1</tt> 变量外。这样能保证我们的编译环境不会被宿主系统不必要的或者有潜在危险的环境变量影响。用这样的方法来确保获得一个干净的工作环境。
</p>
<p>另一个新的 shell 实例是<span class="emphasis"><em>非登陆</em></span> shell,它不读取 <tt class="filename">/etc/profile</tt> 或 <tt class="filename">.bash_profile</tt> 文件,而是读取 <tt class="filename">.bashrc</tt> 文件。现在创建 <tt class="filename">.bashrc</tt> 文件:
</p>
<pre class="userinput"><kbd class="command">cat > ~/.bashrc << "EOF"
<tt class="literal">set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH</tt>
EOF</kbd></pre>
<p>
<span><strong class="command">set +h</strong></span> 命令关闭 <span><strong class="command">bash</strong></span> 的 hash 功能,hash 通常是一个有用的特性:<span><strong class="command">bash</strong></span> 使用一个 hash 表来记录可执行文件的完整路径,以避免为了找到同一个可执行文件而反复搜索 <tt class="envar">PATH</tt> 里的目录。然而,新工具装好之后就要使用,通过关闭 hash 功能,当要运行程序的时候,shell 将总是搜索 <tt class="envar">PATH</tt> 里的目录,这样新工具一编译好,shell 就可以在 <tt class="filename">$LFS/tools</tt> 目录里找到,而不是执行所记忆的其它地方的旧版本程序。
</p>
<p>
将用户文件创建掩码(umask)设为 022 ,使得新创建的文件和目录只有所有者可写,其他用户只能读取和运行(open(2)系统调用的默认模式是新文件权限 644,新目录权限 755)。
</p>
<p>
<tt class="envar">LFS</tt> 环境变量应该设为所选择的挂载点。
</p>
<p>
<tt class="envar">LC_ALL</tt> 环境变量控制某些程序的本地化,使其显示的信息遵循指定国家的惯例。如果宿主系统使用的 Glibc 版本低于 2.2.4,将 <tt class="envar">LC_ALL</tt> 环境变量设置为 “POSIX” 或者 “C” 以外的值(在本章中)可能会在您退出 chroot 环境后再想返回的时候出现问题。请把 <tt class="envar">LC_ALL</tt> 设置为 “POSIX” 或 “C”(这两者是等价的)以确保在 chroot 环境中所有的东西都像预期的那样正常工作。
</p>
<p>
把 <tt class="filename">/tools/bin</tt> 放在 <tt class="envar">PATH</tt>的最前面,<a href="../chapter05/chapter05.html">Chapter 5</a>所有的程序安装好后,立即就可以被 shell 运行。将这一点和关闭 hash 功能结合起来,预防了宿主系统的旧程序在不该运行的时候却被运行了的风险。
</p>
<p>
最后,为了完全准备好编译临时工具的工作环境,导入刚刚创建的 profile 文件:
</p>
<pre class="userinput"><kbd class="command">source ~/.bash_profile</kbd></pre>
</div>
<div class="navfooter">
<ul>
<li class="prev">
<a accesskey="p" href="addinguser.html" title="Adding the LFS User">后退</a>
<p>
Adding the LFS User
</p>
</li>
<li class="next">
<a accesskey="n" href="aboutsbus.html" title="About SBUs">前进</a>
<p>
About SBUs
</p>
</li>
<li class="up">
<a accesskey="u" href="chapter04.html" title="Chapter 4. 最后的准备工作">上一级</a>.
</li>
<li class="home">
<a accesskey="h" href="../index.html" title="Linux From Scratch - Version 6.1">回首页</a>.
</li>
</ul>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -