나는 유명한 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 사용).