.bash_history가 계속 잘립니다.

.bash_history가 계속 잘립니다.

이렇게 설정했는데도 .bash_history가 여전히 잘립니다.

export HISTSIZE=
export HISTFILESIZE=

내 경우에는 .bash_profile언제 발생하는지 잘 모르겠지만 로그아웃하거나 컴퓨터를 종료할 때 발생하는 것 같습니다. 이 문제가 발생한 지 꽤 오래되었기 때문에 내 에 동일한 변수를 설정해 보았 /etc/profile으나 문제가 해결되지 않았습니다.

최대 2000행까지 올라가지만(잘림 이전에 본 최대치임) 때로는 잘리는 경우도 있는데 나중에 이를 발견했습니다. 이 문제를 해결하려면 어떻게 해야 합니까?

답변1

.bash_profileBash가 다음과 같이 시작될 때만 로드됩니다.로그인 쉘. OSX에서는 기본값이 각 터미널에서 로그인 셸을 시작하는 것이므로 이것이 일반적인 경우입니다. 그러나 bash중첩된 셸을 실행하는 항목을 입력하거나 screen 또는 tmux를 실행하거나 대화형 셸을 시작하는 다른 항목을 입력하면 로그인이 아닌 대화형 셸이 생성됩니다. 이 쉘은 읽기만 ~/.bashrc하고 읽지는 않습니다 ~/.bash_profile. HISTFILESIZE환경으로 내보내므로 로그인 쉘을 실행하는 터미널에서 시작된 프로그램에서 시작된 쉘은 이 설정을 상속합니다. 그러나 독립형 실행 쉘은 그렇지 않습니다. (이것은 터미널에서 로그인 쉘을 실행하는 OSX 방법의 근본적인 결함입니다.) 따라서 로그인 쉘을 실행하지 않는 터미널 에뮬레이터 내에서 또는 시작된 스크린 세션에서 쉘을 실행하십시오. by cron 쉘 작업이나 Aquamacs 등에 설정 HISTSIZEHISTFILESIZE기본값이 사용됩니다.

해결 방법 HISTSIZE은 및 를 HISTFILESIZE올바른 위치( in )에 설정하는 것입니다 ~/.bashrc.

.bashrc이상하게도 Bash는 로그인하지 않은 대화형 셸에서만 읽습니다. 모든 대화형 셸에서 이를 읽으려면 다음 줄을 다음 줄에 입력하세요 .bash_profile.

case $- in *i*) . ~/.bashrc;; esac

답변2

다양한 쉘로 로드된 모든 파일을 확인해야 합니다. 내 경우에는 /etc/bash.bashrc 파일에 다음 두 줄이 포함되어 있는 것으로 나타났습니다.

HISTSIZE=1000
HISTFILESIZE=2000

.bashrc에서 재설정했기 때문에 이것이 왜 중요한지 실제로 말할 수는 없지만 이 줄을 주석 처리함으로써 모든 것이 잘 작동하도록 했습니다.

Debian에서 Ubuntu로 전환한 후 이 문제가 발생하기 시작했습니다. 이 줄은 데비안에 존재하지 않고 거기에서 어떤 문제도 본 적이 없다는 점을 고려하면 이것이 최종 해결책이라고 확신합니다.

답변3

답변이 늦었지만 일부 배포판(아마도 모두?)에서는 아무도 언급하지 않았습니다. 기록 파일이 잘렸습니다.변수를 설정하는 순간(이것은 메모리 기록을 관리하는 변수에도 적용됩니다.) .bash_profile(Mac) 또는 .bashrc(다른 Unix) 에 다음 코드 조각을 추가 하고 대화형 셸을 시작하여 bash이러한 경우인지 테스트 할 수 있습니다.

HISTFILE=~/foo_history
for ((i = 0; i < 100; i++)); do echo >> $HISTFILE; done
echo 'history size' $(wc -l $HISTFILE) # should print 100
HISTFILESIZE=5
echo 'history size' $(wc -l $HISTFILE) # should print 5

이것이 일부 이전 기본 시작 파일에 설정된 변수를 변경하는 것이 작동하지 않는 이유입니다.

관련 정보