《Linux From Scratch》第二部分:準備構建 第四章:最後的準備- 4.4. 設置環境
通過為 bash shell 創建兩個開機啟動的文件設置好工作環境。當以 lfs
用戶身份登錄時,運行以下命令創建一個新的 .bash_profile
文件:
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
當以 lfs
用戶身份登錄時,初始 shell 通常是一個可登錄的 shell,它先讀取宿主機的 /etc/profile
文件(很可能包括一些設置和環境變量),然後是 .bash_profile
文件。.bash_profile
文件中的 exec env -i.../bin/bash 命令用一個除了 HOME
、TERM
和 PS1
變量,完全空環境的 shell 代替運行中的 shell。這可以確保沒有不必要的或者有潛在風險的環境變量從宿主機係統中泄露到構建環境。這裏使用的技巧是為了有一個幹淨環境。
新的 shell 實例是一個非登錄 shell,不會讀取 /etc/profile
或者 .bash_profile
文件,而是讀取 .bashrc
文件。
現在創建 .bashrc
文件:
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
EOF
set +h 命令關閉了 bash 的哈希功能。 哈希通常是一個有用的功能,bash 用一個哈希表來記錄可執行文件的完整路徑,以避免搜索 PATH
的時間和又找到一個相同的可執行文件。然而,新工具要一安裝後就使用。通過關閉哈希功能,一個程序準備運行時 shell 總是會搜索 PATH
變量。如此,shell 能在新編譯的工具可用時馬上在文件夾 $LFS/tools
中找到,而不是記錄相同程序在其它地方的之前版本。
設置用戶文件新建掩碼(umask)為 022 ,確保新建的文件和目錄隻有它們自己的所有者可寫,任何人都可讀和可執行(假定 open(2)
係統調用使用的默認模式是新文件使用 644 模式,文件夾使用 755 模式)。
LFS
變量應該設置為選定的掛載點。
LC_ALL
變量控製特定程序的本地化,使得它們的消息能遵循特定國家的慣例。設置 LC_ALL
為 “POSIX” 或 “C”(兩者是等價的),確保 chroot 環境中一切如期望的那樣進行。
當編譯我們的交叉編譯器和鏈接器以及交叉編譯我們的臨時工具鏈時,LFS_TGT
變量設置了一個非默認,但兼容的機器說明。5.2,“工具鏈技術說明”包含更多的信息。
把 /tools/bin
放在標準的 PATH
變量前麵,
第五章中安裝的軟件一安裝完成 shell 就可使用。這和關閉哈希功能一起,降低了在第五章環境中新程序可用時宿主機器使用舊程序的風險。
最後,啟用剛才創建的用戶配置文件,為編譯臨時工具完全準備好環境:
source ~/.bash_profile
最後更新:2017-11-07 14:34:25