문서의 이전 판입니다!
4.4. 환경 설정하기
bash 셸용 시작 파일을 두 개 새로 생성하여 작업 환경을 설정합니다. 사용자 lfs로 로그인한 상태에서 다음 명령을 실행하여 새 .bash_profile
을 만듭니다:
cat > ~/.bash_profile << "EOF"
exec evn -i HOME=$HOME 학기=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
lfs 사용자로 로그온하거나 “-” 옵션이 포함된 su 명령을 사용하여 lfs 사용자로 전환한 경우 초기 셸은 호스트의 /etc/profile
(일부 설정 및 환경 변수가 포함되어 있을 수 있음)을 읽은 다음 .bash_profile
을 읽는 로그인 셸입니다. .bash_profile 파일에서 exec env -i…/bin/bash 명령은 HOME
, TERM
및 PS1
변수를 제외하고 완전히 빈 환경을 가진 새 셸로 실행 중인 셸을 대체합니다. 이렇게 하면 호스트 시스템에서 원치 않거나 잠재적으로 위험한 환경 변수가 빌드 환경으로 유출되지 않습니다.
새 셸 인스턴스는 non-login 셸로, /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=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
CONFIG_SITE=$LFS/usr/share/config.site
export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
EOF
.bashrc
설정의 의미는 다음과 같습니다.
- set +h
set +h 명령은 bash의 해시 기능을 끕니다. 해시 기능은 일반적으로 유용한 기능으로, 해시 테이블을 사용하여 실행 파일의 전체 경로를 기억함으로써 동일한 실행 파일을 찾기 위해 경로를 반복해서 검색하지 않아도 됩니다. 하지만 새로운 도구는 설치하자마자 사용해야 합니다. 해시 기능을 끄면 프로그램을 실행할 때마다 셸이 PATH를 검색하도록 강제합니다. 따라서 셸은 호스트/usr/bin
또는/bin
에 있는 배포판에서 제공한 동일한 프로그램의 이전 버전을 기억하지 않고 에서 즉시 새로 컴파일된 도구를 사용할 수 있는$LFS/tools/bin
에서 찾습니다. - umask 022
사용자 파일 생성 마스크(umask)를 022로 설정하면 새로 만든 파일과 디렉터리는 소유자만 쓸 수 있지만 누구나 읽고 실행할 수 있습니다(기본 모드가 open(2) 시스템 호출에 사용된다고 가정하면 새 파일은 권한 모드 644로, 디렉터리는 모드 755로 끝납니다). - LFS=/mnt/lfs
LFS
변수는 선택한 마운트 지점으로 설정해야 합니다. - LC_ALL=POSIX
LC_ALL
변수는 특정 프로그램의 현지화를 제어하여 해당 메시지가 지정된 국가의 규칙을 따르도록 합니다.LC_ALL
을 “POSIX” 또는 “C”(이 둘은 동일)로 설정하면 교차 컴파일 환경에서 모든 것이 예상대로 작동합니다. - LFS_TGT=$(uname -m)-lfs-linux-gnu
LFS_TGT
변수는 크로스 컴파일러와 링커를 빌드할 때와 임시 툴체인을 크로스 컴파일할 때 사용할 기본값은 아니지만 호환 가능한 머신 설명을 설정합니다. 자세한 내용은 툴체인 기술 노트에서 확인할 수 있습니다. - PATH=/usr/bin
많은 최신 리눅스 배포판은/bin
과/usr/bin
을 병합했습니다. 이 경우 챕터 6 환경에서는 표준 PATH 변수를/usr/bin/
으로 설정해야 합니다. 그렇지 않은 경우 다음 줄은 경로에/bin
을 추가합니다. - if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
만약/bin
이 심볼릭 링크가 아니라면 PATH 변수에 추가해야 합니다. - PATH=$LFS/tools/bin:$PATH
표준PATH
앞에$LFS/tools/bin
을 넣으면 5장 초반에 설치한 크로스 컴파일러가 설치 직후 셸에서 선택됩니다. 위에서 설정한 해싱을 끄는것과 이 설정이면 크로스 컴파일러 대신 호스트의 컴파일러가 사용될 위험이 줄어듭니다. - export …
앞의 명령으로 일부 변수를 설정했지만, 모든 하위 셸에서 볼 수 있도록 하기 위해 해당 변수를 내보냅니다.