Bash가 기록을 추가하는 것을 중지하는 방법

Bash가 기록을 추가하는 것을 중지하는 방법

Bash의 터미널 기록을 내가 원하는 방식으로 설정하는 데 많은 어려움을 겪고 있습니다. 중복된 항목이 없기를 원하며 명령을 입력하면 해당 항목이 저장되고 위의 중복 항목이 제거되기를 원합니다.

문제는 history명령이 내가 원하는 방식으로 작동하고 있음을 보여주지만 로그아웃하자마자 중복 항목이 다시 나타난다는 것입니다. 나는 그것이 기존 역사에 역사를 추가하는 것이라고 생각합니다. 내 파일에 다음 줄이 있습니다 .bashrc.

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

주석 해제를 시도했지만 shopt로그아웃 시 기록이 계속 추가됩니다. 로그아웃 전 기록을 그대로 유지하려면 어떻게 해야 하나요?

답변1

중복의 경우 erasedups원하는 대로 수행되어야 합니다. 새 항목이 기록에 추가되면 중복 제거가 트리거되고 해당 명령의 이전 발생 항목을 모두 제거하고 가장 최근 명령만 남깁니다.


질문에 대답해"로그아웃 전 기록을 그대로 유지하려면 어떻게 해야 하나요?"

제 생각에는 이것은 가끔씩만 작동하는 것 같습니다. (그렇지 않으면 왜 기록을 사용하고 싶습니까?) 발행하여 이를 수행할 수 있습니다.

history -c; history -r

이렇게 하면 현재 메모리에 보관된 모든 기록 항목이 지워지고 기록 파일에서 전체 기록을 다시 읽습니다. 따라서 현재 셸 세션에 로그인한 이후 실행한 모든 명령은 잊혀집니다. 나는 많은 테스트(유사한 명령이 많이 있지만 실제로 중복되지는 않음)를 수행하고 내 기록이 손상되는 것을 원하지 않는 상황에서 매우 유용하다고 생각합니다. 그래서 내에서는 다음과 같이 수행합니다 .bashrc.

alias hrr='history -c; history -r'

( hrr"역사적 재독"으로 기억됨).

관련 정보