chroot 환경에 여러 변수와 함수를 전달하는 방법은 무엇입니까?

chroot 환경에 여러 변수와 함수를 전달하는 방법은 무엇입니까?

Arch Linux 설치 프로세스를 자동화하는 스크립트를 작성 중인데 환경 문제가 발생했습니다. 설치 순서가 포함된 파일과 스크립트 시작 부분에서 파생된 모든 기능이 포함된 파일이 있습니다.

실행에서는 arch-chroot /mnt /bin/bash -c someFunction해당 코드 줄 이전에 설정된 함수나 변수를 인식하지 못합니다.

export -f someFunction함수를 인식하지만 분해 someFunction함수 자체일 뿐이라면 다른 함수를 호출할 뿐입니다. chroot 환경에서 모든 기능을 얻는 가장 우아한 방법은 무엇입니까?

또한 스크립트 시작 부분에서 사용자가 설정한 모든 변수를 chroot 환경으로 내보내는 방법이 필요합니다. (위의 문제를 해결하면 이 문제도 해결될 것 같습니다)

답변1

변수를 복사하지 않고 전달할 수 있었습니다(스크립트 외부에서 민감한 변수를 복사하는 것은 보안상 위험합니다). 아래는 일부입니다.

cp archsin-functions /mnt/root/;

arch-chroot /mnt /bin/bash -- << EOCHROOT

    source \$HOME/archsin-functions;

    createSwap;
    setLocale "${CITY}";
    setHost "${HSTNAME}";
    setInitramfs "${REPOAPITOKEN}" "${REPOID}";
    setUser "${USRGROUPS}" "${USRNAME}" "${USRPASSWD}" "${REPOAPITOKEN}" "${REPOID}";

    systemctl enable NetworkManager.service

EOCHROOT

shred --verbose -u --zero --iterations=3 /mnt/root/archsin-functions;

<< EOCHRROOT-트레독chroot 환경에서 생성된 실행 셸에 라인 마커를 EOCHROOT배치합니다 ./bin/bash

파일을 읽을 때 변수 확장이 수행되므로 함수는 변수 내에 있는 데이터를 올바르게 제공합니다. 이스케이프 문자는 해당 줄이 실제로 실행될 때까지 $확장을 차단합니다 . $HOME실행되면 chroot 환경에서 수행되므로 함수 파일이 있는 chroot 환경의 폴더를 $HOME평가합니다 . /root실행 후에는 흔적을 남기지 않고 파일이 삭제됩니다.

답변2

/etc/profile.dchroot 계층 구조 및 bash의 디렉터리에 있는 파일에 변수와 함수를 배치합니다.~해야 한다시작 시 소스(bash에서 사용하는 다른 /etc 파일을 설정한 경우)

관련 정보