임시 사용을 위해 깨끗한 쉘 환경을 만드는 방법은 무엇입니까?

임시 사용을 위해 깨끗한 쉘 환경을 만드는 방법은 무엇입니까?

나는 유명한 Unix 중심 Q&A 사이트에 대한 질문에 자주 답변하고, 많은 답변에서 쉘 사용 예를 제공합니다 bash. 하지만 이 작업을 수행할 때마다 모든 단계가 설명되고 문서화되었는지 확인하기 위해 깨끗한 환경을 만드는 과정을 수동으로 거쳐야 합니다. 이 과정을 어떻게 더 쉽게 만들 수 있나요? 이상적으로는 명령을 입력하여 깨끗한 환경을 확보하고 완료 시 해당 임시 환경의 모든 흔적을 삭제하고 싶습니다.

답변1

개인적으로 저는 이 작업을 수행하기 위해 다음 bash기능을 사용합니다.

so() {
    local tmpdir="$(mktemp -d)"
    local tmprc="$(mktemp)"
    cat > "$tmprc" << EOF
PS1='\\$ '
cd "$tmpdir"
EOF
    env - HOME="$HOME" TERM="$TERM" bash --rcfile "$tmprc"
    rm -rf "$tmpdir" "$tmprc"
}

수행되는 작업은 다음과 같습니다(순서대로).

  • 임시 디렉토리를 생성합니다(클린 환경에서 작업 디렉토리로 사용).
  • 임시 파일을 만듭니다(rc 파일로 사용 bash).
  • rc 파일에 다음 줄을 추가합니다.
    • 프롬프트를 PS1프롬프트 종결자 뒤에 공백으로 설정하면 Q&A 사이트에서 출력 사본을 얻으려는 경우 관련성이 유지됩니다.
    • 우리가 만든 임시 디렉터리로 전환합니다.
  • 호출의 새 인스턴스는 bash다음과 같습니다.
    • $HOME처음에는 및 ( $TERM)를 제외하고는 빈 환경이 있습니다 env - ....
    • 이전에 생성한 임시 파일() --rcfile에서 rc 파일을 읽습니다 .
  • Bash가 종료된 후 우리가 만든 임시 파일을 삭제합니다.

분명히 이것은 완전히 안전한 것은 아닙니다. 즉, 시스템의 다른 부분에 계속 액세스할 수 있다는 의미입니다. 그러나 이는 테스트에 사용할 수 있는 깔끔한 준비 환경을 제공합니다.

답변2

chroot한 가지 방법은 가상 머신을 사용하는 또 다른 방법입니다. LV에 chroot 환경을 구축하고 스냅샷을 생성하고 작업을 수행한 다음 스냅샷 상태로 되돌릴 수 있습니다.

또는 - 가상 머신(디스크 스냅샷)에 동일한 작업을 수행하고 모든 변경 사항을 되돌립니다.

나는 일반적으로 새로 설치된 가상 머신을 사용하여 이 작업을 수행합니다(VirtualBox 및 kickstart 또는 PXE 부팅과 함께 autoyast 사용).

관련 정보