Mac OSX bash 쉘 히스토리 길이를 늘릴 수 없습니다


26

얼마 전에 ~ / .bash_profile을 500 줄 이상으로 설정했지만 시스템에서이를 잡을 수없는 것 같습니다.

왜 그런지 아십니까?

> nano -w ~/.bash_profile
export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
HISTFILESIZE=10000000

> history | wc -l
     500

답변:


34

또한 설정해야합니다 HISTSIZE=10000000.

HISTFILESIZE기록 파일 HISTSIZE에 보관할 줄 수 를 결정하고 메모리에 보관할 줄 수 를 결정합니다. 둘 다 기본값으로500

echo $HISTFILESIZE $HISTSIZE변경하기 전에 실행 한 후 다시 실행 하십시오. 10000000 500그 다음에 먼저 보아야합니다 10000000 10000000.


16

당신은 할 필요가 수출 HISTSIZEHISTFILESIZE당신의 환경 변수 ~/.bash_profile파일.

에 다음 줄을 추가하십시오 ~/.bash_profile.

# history size
export HISTFILESIZE=1000000
export HISTSIZE=1000000

9

대답:

HISTSIZEbash 프로필 ( ~/.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를 터치 할 이유가 없으며 다른 경우의 값이 다른 유스 케이스는 드물다 (그리고 일반적으로 유용한 히스토리 사용자 정의 설정을 포함하여 더 유용한 것임).


당신은 올바른 짐입니다. Bash 소스 코드는 HISTFILESIZE가 설정되어 있지 않으면 HISTFILESIZE를 HISTSIZE로 설정한다는 것을 보여줍니다. git.savannah.gnu.org/cgit/bash.git/tree/…
로버트
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.