답변:
이것을 .bashrc
(Linux) 또는 .bash_profile
(MacOS)에 추가하십시오 .
export HISTFILESIZE=
export HISTSIZE=
거기에 무제한 역사. 현재 27000 개의 항목이 있습니다 :)
보낸 사람 man bash
:
경우
HISTFILESIZE
설정되지 않는 경우, 절단이 수행되지 않습니다.
즉, .bash_history
절대로 잘리지 않습니다
HISTSIZE
문서화 된 것을 찾을 수는 없지만에도 동일하게 적용됩니다 .
내가 시도 할 또 다른 깔끔한 기능은 다음과 같습니다.
경우
HISTTIMEFORMAT
변수가 설정, 타임 스탬프는 역사의 주석 문자로 표시된 이력 파일에 기록됩니다, 그래서 그들은 다음과 같이 쉘 세션에 걸쳐 보존 할 수있다 :
export HISTTIMEFORMAT="%F %T "
이미 시도한 경우 알려주십시오 ...
gdb
. HISTSIZE
변수 를 설정하면 변수를 0으로 사용하여 기록 크기를 완전히 비활성화합니다.
export
, HISTFILESIZE
라인 (안 바이트)의 수이며, 기록 파일 은 변수를 설정할 때 절단 단계가 발생 HISTFILESIZE
(쉘 종료). 구성 파일에서 다른 값으로 두 번 설정하지 마십시오.
( https://stackoverflow.com/a/19533853/128597 에서 답변을 다시 게시 )
수년에 걸쳐 많은 크고 추악한 반복과 이상한 일이 일어난 후에, 나는 이것을 .bashrc 의 간결한 섹션으로 만들었습니다 .
먼저 .bashrc의이 섹션을 주석 처리하거나 제거 해야합니다 (Ubuntu의 기본값). 그렇지 않으면 screen
세션 실행과 같은 특정 환경에서 여전히 기록이 잘립니다.
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
둘째, 이것을 .bashrc의 맨 아래에 추가 하십시오 :
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# https://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
참고 : 모든 명령은 실행 직후에 기록되므로 실수로 암호를 붙여 넣은 경우 기록 기록을 피하기 위해 "kill -9 %%"만 할 수 없으므로 수동으로 제거해야합니다.
또한 각 bash 세션은 전체 히스토리 파일을 메모리에로드하지만 히스토리 파일이 10MB로 증가하더라도 ( 시간이 오래 걸리는 경우) bash 시작 시간에 큰 영향을 미치지 않습니다.
HISTFILESIZE
원하는 이벤트를 제외한 해당 이벤트를 제거해야합니다. 쉘 종료시 잘립니다 (그러나 예상됩니다). 그리고 당신은 필요하지 않습니다 export
.
bash --norc
기록을 다시 자릅니다.
export HISTFILE="/home/$USER/hist/`uname -n``tty | tr '/' '-'`"
세션마다 셸 기록을 별도로 유지 하는 데 사용 합니다 (호스트 이름 및 tty 이름 기반). 물론 ~ / hist 디렉토리를 먼저 만들어야합니다.
PROMPT_COMMAND="${PROMPT_COMMAND:+${PROMPT_COMMAND} ;}history -a";
~ / .bashrc에 포함 :
# append a session's history on shell exit
shopt -s histappend
export HISTFILESIZE=
export HISTSIZE=
이 답변은 다음 기준을 만족합니다.
별도의 마스터 이력 (세션이 이력을 방해 할 수 없음)
자동 기록 작성 (핫키 없음)
드문 쓰기 (각 명령 뒤에 추가 없음)
대화식 시작시 $HISTFILESIZE
숫자로 설정된 경우 bash $HISTFILE
는 해당 숫자로 잘립니다 . 대화식 닫기에서 쉘 옵션 histappend
이 설정되면 bash는에 $HISTSIZE
행을 추가 $HISTFILE
하고 그렇지 않으면 겹쳐 씁니다 $HISTFILE
.
터미널에서 탭을 만들 때마다 ~/.bash_profile
읽습니다. 이는 bash가 계속 읽지 않습니다 ~/.bashrc
. 에 다음 줄을 추가하십시오 ~/etc/bash_profile
.
# if bashrc has content, source it
[[ -s ~/.bashrc ]] && . ~/.bashrc
screen을 사용하는 경우 구성 파일은 ~ / .screenrc입니다. 화면에 기록을 기록하려면 bash 시작 파일을 제공하고 기록을 기록하는 로그인 쉘을 사용하도록 설정하면됩니다.
# use bash, make it a login shell
defshell -bash
다른 개념 (적용 할 수 없음)이지만 shell-sinkunlimited
사용시 히스토리 를 가질 수 있습니다 .