답변:
HISTSIZE
bash 세션이 진행되는 동안 히스토리 목록의 메모리에 저장되는 행 또는 명령 수입니다.
HISTFILESIZE
(a) 세션 시작시 히스토리 파일에 허용되고 (b) 이후 세션에서 사용하기 위해 bash 세션 종료시 히스토리 파일에 저장되는 행 또는 명령의 수입니다.
file
: on disk-와 list
: in memory 의 차이점을 확인 하십시오 .
위의 모든 정보와 몇 가지 예 :
실시 예 1 :
HISTFILESIZE=10
및HISTSIZE=10
histappend
활성화되어 있지 않다고 가정하면 명령 41에서 50까지는 HISTFILE에 저장됩니다. 이제 HISTFILE에 10 개의 명령과 10 개의 새로 작성된 명령이 있습니다.실시 예 2 :
HISTFILESIZE=10
및HISTSIZE=5
histappend
활성화되어 있지 않다고 가정하면 명령 46 ~ 50은 HISTFILE에 저장되며, 이제 처음에는 10 개의 명령과 5 개의 새로 작성된 명령이 있습니다.실시 예 3 :
HISTFILESIZE=5
및HISTSIZE=10
histappend
사용 불가능한 것으로 가정하면 명령 41-50이 HISTFILE에 저장되며 이제 HISTFILE에 5 개의 명령과 새로 작성된 10 개의 명령이 있습니다.elixir_sinari의 정보 :
명령을 입력 할 때 기록 "파일"이 업데이트되지 않습니다. 명령은 "목록"에 별도로 저장됩니다 (히스토리 명령으로 액세스). 이러한 저장된 명령의 수는 HISTSIZE 값으로 제어됩니다. 쉘 (대화식)이 종료되면 마지막 $ HISTSIZE 행이 해당 "목록"에서 $ HISTFILE에 복사 / 추가됩니다. HISTFILESIZE가 설정되면이 조작 후에 $ HISTFILESIZE 행 (최신) 만 $ HISTFILE에 존재하는지 확인합니다. 쉘이 시작되면 "list"는 $ HISTFILE에서 최대 $ HISTSIZE 명령까지 초기화됩니다.
그리고 man bash
페이지에서 :
HISTSIZE 변수의 값은 히스토리 목록에 저장할 명령 수로 사용됩니다. 마지막 HISTSIZE 명령의 텍스트 (기본값 500)가 저장됩니다. (...)
시작시 히스토리는 변수 HISTFILE (기본값 ~ / .bash_history)로 이름이 지정된 파일에서 초기화됩니다. HISTFILESIZE 값으로 지정된 파일은 필요한 경우 HISTFILESIZE 값으로 지정된 행 수를 초과하지 않도록 잘립니다. (...) 대화식 쉘이 종료되면 마지막 $ HISTSIZE 행이 히스토리 목록에서 $ HISTFILE로 복사됩니다. histappend shell 옵션이 활성화 된 경우 (아래의 SHELL BUILTIN COMMANDS 아래에서 shopt 설명 참조) 행이 내역 파일에 추가되고, 그렇지 않으면 내역 파일을 덮어 씁니다. HISTFILE을 설정하지 않았거나 기록 파일을 쓸 수없는 경우 기록이 저장되지 않습니다. (...) 히스토리를 저장 한 후 히스토리 파일은 HISTFILESIZE 줄을 초과하지 않도록 잘립니다. HISTFILESIZE가 설정되지 않은 경우
arturomp가 말한 것을 기반으로하고 좀 더 명확하게하기 위해 노력합니다.
2000 년의 오랜 역사를 가지고 있다고 가정 해 봅시다.
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2027 78
2028 57
2029 yu45u
당신은 당신이 보여주는 것을 줄일 수 있습니다 HISTSIZE
~$ HISTSIZE=5
~$ history
2026 546
2027 78
2028 56
2029 yu45u
2030 HISTSIZE=5
아무리 많은 명령을 입력하더라도 마지막 5 개만 기록됩니다.
~$ ABC
~$ GGH
~$ GSDHFG
~$ JFDR
~$ ABSDDS
~$ AHFGHFD
<close terminal>
<open new terminal>
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2028 56
2029 yu45u
2030 HISTSIZE=5
2031 GGH
2032 GSDHFG
2033 JFDR
2034 ABSDDS
2035 AHFGHFD
마지막 5 개 명령 만 기록되었으므로 첫 번째 명령 ( "ABC")이 기록에 없다는 것을 분명히 알 수 있습니다.
이제 전체 히스토리가 파일 ( .bash_history
)에 저장 되며이 파일이. 파일로 가져 오는 시간을 변경할 수 있습니다 HISTFILESIZE
. 예를 들어 2033
HISTFILESIZE
내 경우에는 다음과 같이됩니다.
~$ history
1 fghfghdf
2 gegege
3 gege
.. ..
2028 HISTSIZE=5
2029 GGH
2030 GSDHFG
2031 JFDR
2032 ABSDDS
2033 AHFGHFD
HISTSIZE=-1
및 HISTFILESIZE=-1
.
bash
매뉴얼 페이지는 말합니다 : Non-numeric values and numeric values less than zero inhibit truncation
그러나 나는 내 역사를
HISTSIZE='INFINITY'
및로 변경했습니다 HISTFILESIZE='ANDBEYOND'
. 숫자가 아니므로 모든 것을 저장합니다. 팁 고마워!