쉘 스크립트(sysprep)에서 Bash 기록을 완전히 지웁니다.

쉘 스크립트(sysprep)에서 Bash 기록을 완전히 지웁니다.

저는 머신을 식별 해제하고 템플릿 작성을 준비하는 sysprep 스타일 스크립트를 개발 중입니다. 종료하기 전에 수행하고 싶은 마지막 작업은 루트 사용자의 bash 기록을 지우는 것입니다. 나는 실행할 수 있다

HISTFILE=~/.bash_history
set -o history
>$HISTFILE
history -c

스크립트 내에서. 문제는 스크립트를 실행하는 대화형 루트 세션에 대해 메모리에 저장된 기록이 해당 세션이 끝날 때 $HISTFILE에 기록된다는 것입니다. sysprep 스크립트가 마지막으로 실행되기를 원합니다(스크립트의 마지막 줄은 입니다 shutdown now -h).

필요한 경우 닫기 전에 대화형 세션에서 기록을 수동으로 지울 수 있지만 이 작업을 스크립트의 일부로 수행하고 싶습니다. 어떤 제안이 있으십니까?

이것이 중요한지는 확실하지 않지만 RHEL8에서는 작동합니다.

답변1

내가 생각할 수 있는 가장 가까운 것은 다음과 같습니다.

시스템 준비 도구

#!/bin/sh
# other steps
cp /dev/null ~/.bash_history
shutdown -h now

다음은:

# exec /path/to/sysprep.sh

....을 호출하는 대신 현재 쉘을 쉘 스크립트로 /path/to/sysprep.sh대체합니다 exec. 이를 통해 현재 쉘이 기록을 작성하고 종료할 수 있습니다. 그러면 sysprep 스크립트가 기록 파일을 자유롭게 삭제(또는 지울) 수 있습니다.

답변2

$HISTFILE쉘이 종료되면 현재 쉘의 기록이 추가됩니다. 이런 일은 unset $HIST_FILE발생하지 않으므로 셸이 종료되면 해당 셸 인스턴스의 기록이 손실됩니다.

그래서 그냥:

  1. 스크립트는 대화형 셸에서 얻거나 실행되거나 대화형 셸 없이 직접 호출됩니다.
  2. 스크립트는 종료하기 전에 $HISTFILE 설정을 해제합니다.

기록 파일을 삭제하거나 나중에 보려는 기록으로 바꿀 수 있습니다.

관련 정보