Programing

BIST HISTSIZE 대 HISTFILESIZE?

crosscheck 2020. 6. 25. 08:16
반응형

BIST HISTSIZE 대 HISTFILESIZE?


의 차이 무엇입니까 HISTSIZE대는 HISTFILESIZE?

bash 기록을 기본 500 줄 이상으로 확장하는 데 사용됩니다.

여기와 다른 포럼에서 왜 둘 다 필요한지에 대한 명확성이 부족한 것 같습니다. (실시 예 1 , 실시 예 2 , 실시 예 3 ).


짧은 답변:

HISTSIZE bash 세션이 진행되는 동안 히스토리 목록의 메모리에 저장되는 행 또는 명령 수입니다.

HISTFILESIZE 는 (a) 세션 시작시 히스토리 파일에 허용되며 (b) 이후 세션에서 사용하기 위해 bash 세션 종료시 히스토리 파일에 저장되는 행 또는 명령 수입니다.

file: on disk-와 list: in memory 의 차이점을 확인 하십시오 .

긴 대답 :

위의 모든 정보와 몇 가지 예 :

실시 예 1 : HISTFILESIZE=10HISTSIZE=10

  1. 세션을 시작합니다.
  2. HISTFILE (bash 명령 기록을 저장하는 파일)은 HISTFILESIZE = 10 줄을 포함하도록 잘립니다.
  3. 50 줄을 씁니다.
  4. 50 개의 명령이 끝날 때 명령 41-50 만 히스토리 목록에 있으며 크기는 HISTSIZE = 10에 의해 결정됩니다.
  5. 당신은 당신의 세션을 종료합니다.
  6. histappend활성화되어 있지 않다고 가정하면 명령 41 ~ 50이 HISTFILE에 저장되며, 이제 처음에는 10 개의 명령과 10 개의 새로 작성된 명령이 있습니다.
  7. HISTFILESIZE = 10 줄을 포함하도록 HISTFILE이 잘립니다.
  8. 이제 내역에 10 개의 명령이 있습니다. 방금 완료 한 세션에서 방금 입력 한 마지막 10 개입니다.
  9. 새 세션을 시작할 때 HISTFILE HISTFILESIZE = 10으로 1에서 다시 시작합니다.

실시 예 2 : HISTFILESIZE=10HISTSIZE=5

  1. 세션을 시작합니다.
  2. HISTFILE (bash 명령 기록을 저장하는 파일)은 최대 HISTFILESIZE = 10 줄을 포함하도록 잘립니다.
  3. 50 줄을 씁니다.
  4. 50 개의 명령이 끝나면 명령 46-50 만 히스토리 목록에 있으며 크기는 HISTSIZE = 5에 의해 결정됩니다.
  5. 당신은 당신의 세션을 종료합니다.
  6. histappend사용 불가능한 것으로 가정하면 명령 46에서 50까지는 HISTFILE에 저장되며, 이제 처음에는 10 개의 명령과 5 개의 새로 작성된 명령이 있습니다.
  7. HISTFILESIZE = 10 줄을 포함하도록 HISTFILE이 잘립니다.
  8. 이제 기록에 10 개의 명령이 있습니다. 이전 세션의 5 개와 방금 완료 한 세션에서 방금 입력 한 마지막 5 개가 있습니다.
  9. 새 세션을 시작할 때 HISTFILE HISTFILESIZE = 10으로 1에서 다시 시작합니다.

실시 예 3 : HISTFILESIZE=5HISTSIZE=10

  1. 세션을 시작합니다.
  2. HISTFILE (bash 명령 기록을 저장하는 파일)은 최대 HISTFILESIZE = 5 줄을 포함하도록 잘립니다.
  3. 50 줄을 씁니다.
  4. 50 개의 명령이 끝날 때 명령 41-50 만 히스토리 목록에 있으며 크기는 HISTSIZE = 10에 의해 결정됩니다.
  5. 당신은 당신의 세션을 종료합니다.
  6. histappend활성화되어 있지 않다고 가정하면 명령 41에서 50까지는 HISTFILE에 저장됩니다. 이제 HISTFILE에 5 개의 명령과 10 개의 새로 작성된 명령이 있습니다.
  7. HISTFILESIZE = 5 줄을 포함하도록 HISTFILE이 잘립니다.
  8. 이제 기록에 5 개의 명령이 있습니다. 방금 완료 한 세션에서 방금 입력 한 5 개의 명령이 있습니다.
  9. 새 세션을 시작할 때 1 단계에서 HISTFILE HISTFILESIZE = 5로 다시 시작하십시오.

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를 설정하지 않으면 절단이 수행되지 않습니다.


Building on top of what arturomp have said and in an effort to make it a bit clearer.

Assumming you have 2000-something long history..

~$ history
    1  sdf
    2  fghdfgjf
    3  fghfghdf
   ..  ..
 2027  78
 2028  57
 2029  yu45u

You can cut down what you are shown with HISTSIZE

~$ HISTSIZE=5
~$ history
 2026  546
 2027  78
 2028  56
 2029  yu45u
 2030  HISTSIZE=5

Now, no matter how many commands you type, only the last 5 will be recorded.

~$ 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

We can clearly see that our first command ("ABC") is not in the history since only the last 5 commands were recorded.

Now, the total history is stored in a file (.bash_history) and you can alter how long this file gets with the HISTFILESIZE. For example with a 2033 HISTFILESIZE, in my case I would have this:

~$ history
    1  fghfghdf
    2  gegege
    3  gege
   ..  ..
 2028  HISTSIZE=5
 2029  GGH
 2030  GSDHFG
 2031  JFDR
 2032  ABSDDS
 2033  AHFGHFD

참고URL : https://stackoverflow.com/questions/19454837/bash-histsize-vs-histfilesize

반응형