# 환경 구성

bash 셸의 시작 파일 2개를 생성해서 좋은 작업 환경을 생성하십시오. 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=/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의 해싱 기능을 끕니다. 해싱은 일반적으로 유용한 기능입니다. bash는 실행 파일의 전체 경로를 기억하기 위해 해시 테이블을 사용하여 PATH를 항상 검색하지 않고 동일한 실행 파일을 찾습니다. 그러나 새 프로그램은 설치되는 즉시 사용해야 합니다. 해시 함수를 끄면 셸은 프로그램을 실행할 때 항상 PATH를 검색합니다. 따라서 셸은 다른 위치에 있는 동일한 프로그램의 이전 버전을 기억하지 않고 사용 가능한 즉시 $LFS/tools에서 새로 컴파일된 도구를 찾습니다.

  • umask 022

    사용자 파일 생성 마스크(umask)를 022로 설정하면 새로 만든 파일 및 디렉터리는 소유자만 쓸 수 있지만 누구나 읽을 수 있고 실행할 수 있습니다(기본 모드는 open(2) 시스템 호출에서 사용된다고 가정할 때 새 파일은 권한 모드 644, 디렉토리는 권한 모드 755가 됩니다).

  • LFS=/mnt/lfs

    LFS 변수는 선택한 마운트 지점이어야 합니다.

  • LC_ALL=POSIX

    LC_ALL 변수는 특정 프로그램의 지역화를 제어하여 해당 프로그램의 메시지가 지정된 국가의 규약을 따르도록 합니다. LC_ALLPOSIX 또는 C(둘이 동일)로 설정하면 chroot 환경에서 모든 작업이 예상대로 작동합니다.

  • LFS_TGT=$(uname -m)-lfs-linux-gnu

    LFS_TGT 변수는 크로스 컴파일러와 링커를 빌드하고 우리의 임시 툴체인을 크로스 컴파일할 때 사용하기 위해 기본이 아니지만 호환 가능한 기계 설명을 설정합니다.

  • PATH=/usr/bin

    많은 최신 리눅스 배포판이 /bin/usr/bin을 병합했습니다. 이 경우 표준 PATH 변수는 6장 환경에 대해 /usr/bin/으로 설정하기만 하면 됩니다. 그렇지 않으면 다음 명령어가 PATH에 /bin을 추가합니다.

  • if [ ! -L /bin ]; then PATH=/bin:$PATH; fi

    /bin이 심볼릭 링크가 아니라면, 이는 PATH 변수에 추가됩니다.

  • PATH=$LFS/tools/bin:$PATH

    표준 PATH보다 $LFS/tools/bin을 우선시함으로써 5장 시작 부분에 설치된 크로스 컴파일러는 설치 직후 셸에 의해 사용됩니다. 이렇게 하면 해시 해제와 함께 크로스 컴파일러 대신 호스트 컴파일러를 사용할 위험이 최소화됩니다.

  • CONFIG_SITE=$LFS/usr/share/config.site

    5장 및 6장에서는 이 변수를 설정하지 않은 경우 configure 스크립트가 /usr/share/config.site에서 일부 배포판 관련 구성 항목을 로드하려고 할 수 있습니다. 호스트에서 발생할 수 있는 오염을 방지하기 위해 재정의합니다.

  • export ...

    설정한 모든 변수를 환경 변수에 등록합니다.

중요

여러 상용 배포판에서 /etc/bash.bashrc의 문서화되지 않은 인스턴스화를 bash 초기화에 사용합니다. 이 파일에는 중요한 LFS 패키지 발드에 영향을 미칠 수 있는 방법으로 lfs 사용자의 환경을 수정할 수 있는 가능성이 있습니다. lfs 사용자의 환경이 깨끗한지 확인하려면 /etc/bash.bashrc가 있는지 확인하고 있는 경우 더미 파일로 변경합니다. root 유저로 다음을 실행합니다.

[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE

7장에서 lfs 유저의 사용이 끝난 다음 원한다면 /etc/bash.bashrc를 복구할 수 있습니다.

마지막으로, 임시 도구를 빌드하는 데 필요한 모든 환경을 준비하려면, 방금 생성한 사용자 프로필을 반영하십시오:

source ~/.bash_profile
Last Updated: 5/3/2021, 11:07:35 AM