왜 bash에서 "histappend"를 설정하지 않습니까?

왜 bash에서 "histappend"를 설정하지 않습니까?

이게 뭔지 알고 나면shopt -s histappend 방법, 이는 매우 합리적인 설정인 것 같고 기본값이 아니라는 사실에 놀랐습니다. 쉘이 종료될 때마다 왜 자신의 기록을 지우고 싶습니까?

답변1

글쎄, histappend설정하지 않았다고 해서 쉘이 종료될 때마다 기록이 지워지는 것은 아닙니다. Bash가 없으면 histappend시작 시 histfile이 메모리로 읽혀지고(작업 중에 새 항목이 추가됩니다), 쉘이 종료되면 마지막 HISTSIZE 줄이 추가되지 않고(예: 이전 콘텐츠 교체) 내역 파일에 기록됩니다.

예를 들어, histfile에 400개의 항목이 포함되어 있고 bash 런타임 중에 10개의 새 항목이 추가된 경우(histsize가 500으로 설정됨) 새 histfile에는 410개의 항목이 포함됩니다.

이 동작은 더 많은 bash 인스턴스를 병렬로 사용하는 경우에만 문제가 됩니다. 이 경우 기록 파일에는 종료할 마지막 셸의 내용만 포함됩니다.

관련 없음: 개인 정보 보호를 위해 일부 사람들은 쉘이 종료될 때 쉘 기록이 지워지기를 원합니다.

답변2

역사적 호환성을 위해 추측합니다. 이 histappend옵션은 bash 2.0까지는 존재하지 않았습니다.

관련 정보