답변:
HISTSIZE
bash 프로필 ( ~/.bash_profile
) 에서 설정하면 됩니다 . HISTFILESIZE
설정하지 않은 채로 둘 수 있습니다 . 메모리 내 기록과 파일 기반 기록 이 모두 구성됩니다 .
# Saves 10 million lines in memory and in the bash history file.
HISTSIZE=10000000
문제는 HISTFILESIZE는 세션을 시작할 때 파일에 저장된 최대 기록 만 설정한다는 것입니다. HISTSIZE는 세션이 끝날 때 얼마나 많은 라인이 저장되는지 결정합니다. HISTFILESIZE가 HISTSIZE보다 큰 경우 파일을 HISTSIZE 명령으로 덮어 쓰게되므로 HISTSIZE 이상을 볼 수 없습니다 ( 역사를 추가하도록 설정 하지 않는 한 별도의 주제 : 셸 내장 명령histappend
에서 조회 ) .
이것이 효과가없는 이유입니다. HISTSIZE를 기본값 (아마도 500)으로 설정하면 내역 파일은 항상 최신 $ HISTSIZE 명령으로 덮어 씁니다. 오래된 것 ($ HISTSIZE 이후에 목록을 확장 할 수 있음)은 지워집니다.
대부분의 경우 HISTSIZE와 별도로 HISTFILESIZE를 설정할 필요가 없습니다.
HISTSIZE는 히스토리 파일에 몇 줄을 쓸 것인지 결정합니다. 히스토리 파일에 쓰기 전에 가장 최근에 N 개의 행을 유지하면서 종료시 명령 목록이 잘립니다. 기본적으로이 목록은 히스토리 파일을 겹쳐 씁니다.
HISTFILESIZE는 히스토리 파일의 크기 (줄)를 결정합니다. 시작시 파일이 잘리고 N 개의 최신 행이 유지됩니다. 또한 히스토리 파일은 HISTFILESIZE가 설정 될 때마다 잘릴 수 있습니다.
마지막으로 문서화되지 않은 것으로 보이지만 시작 중에 HISTSIZE가 설정된 경우 BASH는 HISTSIZE를 기반으로 HISTFILESIZE를 설정합니다. 나는 macOS와 몇 가지 종류의 우분투에서 이것을 시도했으며 그 동작은 일관됩니다. 실행 파일에서 HISTSIZE를 설정하면 (어떻게 든 명령 행을 통하지 않음 ) HISTFILESIZE가 일치하도록 설정됩니다. (직접 시도하십시오 : .bash_profile에서 HISTSIZE를 임의로 큰 값으로 설정하고 새 터미널을 종료하고 시작하면 echo $HISTSIZE $HISTFILESIZE
일치하는 것을 찾을 수 있습니다.)
결과적으로 다른 값을 원하지 않는 한 HISTFILESIZE를 터치 할 이유가 없으며 다른 경우의 값이 다른 유스 케이스는 드물다 (그리고 일반적으로 유용한 히스토리 사용자 정의 설정을 포함하여 더 유용한 것임).