bash 셸에
대한 두 개의 새 시작
파일을 만들어서
작업하기 좋은
환경을 설정한다.
lfs
유저로
로그인하고 다음
명령을 실행하여 새
.bash_profile
을
생성하라:
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
lfs
유저로
로그인하면, 기본
셸은 보통 호스트의
(여러 설정과 환경
변수가
들어있는)/etc/profile
과
.bash_profile
을
차례로 읽는 로그인
셸이다. .bash_profile
파일의 exec env -i.../bin/bash
명령은 HOME
,
TERM
, 그리고
PS1
변수를
제외하고 실행 중인
셸을 완전히 비어
있는 환경으로
대체한다. 이는 환경
변수들이 호스트
시스템에서 빌드
환경으로 의도치
않게 유출될 일이
없게 한다. 이런
테크닉으로 깨끗한
환경을 유지한다는
목표를 달성할 수
있다.
셸의 새 인스턴스는
/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
를 검색하고
다시 같은 실행
파일을 검색하는
것을 방지하고자
실행 파일들의 전체
경로를 기억하는
데에 해시 테이블을
사용한다. 그러나, 이
새로운 도구들은
설치하자마자 바로
사용해야 한다.
해시함수를 끄면
셸은 프로그램이
실행될 때 항상 PATH
를 검색할
것이다. 이러면 셸은
다른 위치에 있는
동일한 프로그램의
기존 버전을
불러오지 않고 $LFS/tools
에서 새로
컴파일되어 사용
가능해진 도구를
찾을 것이다.
사용자 파일 생성
마스크(umask)를 022로
설정하면 새로
생성된 파일과
디렉토리가 오로지
소유자만 쓰기
가능하면서 누구나
읽고 실행 가능한
상태가 된다. (기본
모드가 open(2)
시스템 호출에 의해
쓰여진다고
가정하면, 새 파일은
권한 모드 644를,
디렉토리는 755를
가진다.)
LFS
변수는
선택한 마운트
지점으로
설정되어야 한다.
LC_ALL
변수는
프로그램들의 언어
설정을 담당하여
메시지들을 지정된
국가의 언어로
내보낸다. LC_ALL
을 “POSIX”나 “C”(둘의
결과는 같다)로
설정하면 chroot
환경에서 문제가
생기지 않을 것이다.
LFS_TGT
변수는
크로스 컴파일러와
링커를 빌드할 때,
그리고 임시
툴체인을 크로스
컴파일할 때 기본
지원은 아니지만
호환되는 시스템을
설명하는 데
사용된다. 자세한
설명은 5.2절.
“툴체인 기술
노트”을 참조하라.
/tools/bin
을 원래
PATH
보다 앞에
두면,
5장에서 설치된
모든 프로그램들이
설치되자마자 셸에
인식된다. 이것은
해싱을 끄는 것과
더불어 5장에서 같은
프로그램이 공존할
때 호스트로부터
기존 프로그램들을
사용하는 실수를
방지한다.
끝으로, 방금 만든 사용자 프로필을 적용하여 임시 도구 빌드 환경의 준비를 마친다:
source ~/.bash_profile