이것이 무엇을 shopt -s histappend
의미 하는지 알아 낸 후에 는 매우 제정신이 된 것처럼 보이며 이것이 기본값이 아니라는 것에 놀랐습니다. 왜 각 쉘 출구에서 역사를 지우고 싶습니까?
답변
글쎄, histappend
설정되지 않은 경우 , 각 쉘 종료시 히스토리가 지워지는 것은 아닙니다. histappend
bash를 사용 하지 않으면 시작시 메모리로 histfile을 읽지 않고 ( 작업 중에 새 항목이 추가됨) 쉘 종료시 마지막 HISTSIZE 행이 추가되지 않고 내역 파일에 기록됩니다 (예 : 이전 내용 바꾸기).
예를 들어, histfile에 400 개의 항목이 있으면 bash 런타임 동안 10 개의 새 항목이 추가됩니다. histsize가 500으로 설정되면 새 histfile에 410 개의 항목이 포함됩니다.
이 동작은 더 많은 bash 인스턴스를 병렬로 사용하는 경우에만 문제가됩니다. 이 경우 히스토리 파일에는 마지막 종료 쉘의 컨텐츠 만 포함됩니다.
이것과는 무관 : 프라이버시 문제로 인해 쉘 출구에서 역사를 지우고 싶은 사람들이 있습니다.
답변
역사적 호환성을 위해 추측합니다. 이 histappend
옵션은 bash 2.0까지 존재하지 않았습니다.