Bash 기록 번호는 1부터 시작하지 않습니까?

Bash 기록 번호는 1부터 시작하지 않습니까?

bash 프롬프트(저는 OS X 10.7을 사용하고 있습니다)를 사용자 정의하는 중에 이상한 현상이 발생했습니다. 프롬프트에 ! 를 추가하면 기록 번호가 표시됩니다. 그러나 내역 번호는 항상 1이 아닌 501부터 시작됩니다. 터미널을 다시 시작해도 이런 현상이 발생합니다.

비슷한 것을 찾을 수 없는 것 같아서 여러분이 통찰력을 제공해 주실 수 있는지 궁금합니다.

답변1

남자 배쉬에서 :

   On startup, the history is initialized from the file named by the vari‐
   able HISTFILE (default ~/.bash_history).  The file named by  the  value
   of  HISTFILE  is  truncated,  if necessary, to contain no more than the
   number of lines specified by the value of HISTFILESIZE. [...] When an 
   interactive  shell  exits, the last $HISTSIZE lines are copied from the
   history list to $HISTFILE.

텍스트는 매우 명확하지만 예를 들어 설명하겠습니다(이것은 deb 시스템이지만 bash는 bash입니다).

나의 현재 기록 상태:

~$ set | grep HIST
HISTCONTROL=ignoredups:ignorespace
HISTFILE=/home/hmontoliu/.bash_history
HISTFILESIZE=2000
HISTSIZE=1000

HISTFILESIZE는 2000이고 HISTSIZE는 1000이므로 HISTFILE의 마지막 1000개 행만 사용할 수 있으므로 잘못된 인상을 받을 수 있습니다.역사1000부터 시작하세요.

~$ history | head -1
 1000  if i=1; then echo $i; done

~$ history | wc -l
1000

그러나 실제로 HISTFILE은 마지막 2000개의 명령을 저장합니다.

 ~$ wc -l $HISTFILE
2000 /home/hmontoliu/.bash_history

이것이 짜증스럽다고 생각되면 HISTSIZE 및 HISTFILESIZE와 같을 수 있습니다.

~$ echo "export HISTSIZE=$HISTFILESIZE" >> .bashrc
~$ bash -l
~$ history | head -1
    1  ls
~$ history | wc -l
2000
~$ set | grep HIST
HISTCONTROL=ignoredups:ignorespace
HISTFILE=/home/hmontoliu/.bash_history
HISTFILESIZE=2000
HISTSIZE=2000

마지막 팁: 달려가서 help history사용할 수 있는지 확인해야 합니다.역사

답변2

이것hmonoliu의 답변꽤 좋습니다. 이것은 단지 TL;DR 버전입니다.

bash 기록은 항상 중단한 부분부터 다시 시작됩니다. 홈 디렉터리의 파일에 실행 명령의 반영구적 기록을 유지합니다. bash 셸을 시작할 때마다 이 기록 파일이 로드되며 이전 세션에서 실행된 명령까지 위로 스크롤할 수 있습니다. 기록에 274개의 이전 명령이 있는 경우 새 셸의 명령 기록 번호는 275에서 시작됩니다.

기록 파일은 환경 변수에 지정된 최대 길이로 잘립니다 $HISTFILESIZE. 분명히 히스토리 파일을 최대 500줄로 줄였으므로 각각의 새로운 쉘은 501에서 시작합니다. 이전 기록 항목은 이전 셸의 마지막 500개 항목 모음입니다.

답변3

기본적으로 기록은 에 저장됩니다 ~/.bash_history. 대화형 셸의 기록은 셸의 설정에 따라 종료 시 파일에 저장됩니다. bash(1) 맨페이지를 읽고 "history"를 검색하십시오.

관련 정보