Bash에서 무제한 히스토리를 정의하는 방법이 있습니까?
답변
이것을 .bashrc
(Linux) 또는 .bash_profile
(MacOS)에 추가하십시오 .
export HISTFILESIZE=
export HISTSIZE=
거기에 무제한 역사. 현재 27000 개의 항목이 있습니다 🙂
보낸 사람 man bash
:
경우
HISTFILESIZE
설정되지 않는 경우, 절단이 수행되지 않습니다.
즉, .bash_history
절대로 잘리지 않습니다
HISTSIZE
문서화 된 것을 찾을 수는 없지만에도 동일하게 적용됩니다 .
내가 시도 할 또 다른 깔끔한 기능은 다음과 같습니다.
경우
HISTTIMEFORMAT
변수가 설정, 타임 스탬프는 역사의 주석 문자로 표시된 이력 파일에 기록됩니다, 그래서 그들은 다음과 같이 쉘 세션에 걸쳐 보존 할 수있다 :
export HISTTIMEFORMAT="%F %T "
이미 시도한 경우 알려주십시오 …
답변
( 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 시작 시간에 큰 영향을 미치지 않습니다.
답변
~ / .bashrc에 포함 :
# append a session's history on shell exit
shopt -s histappend
export HISTFILESIZE=
export HISTSIZE=
이 답변은 다음 기준을 만족합니다.
-
별도의 마스터 이력 (세션이 이력을 방해 할 수 없음)
-
자동 기록 작성 (핫키 없음)
-
드문 쓰기 (각 명령 뒤에 추가 없음)
배경
대화식 시작시 $HISTFILESIZE
숫자로 설정된 경우 bash $HISTFILE
는 해당 숫자로 잘립니다 . 대화식 닫기에서 쉘 옵션 histappend
이 설정되면 bash는에 $HISTSIZE
행을 추가 $HISTFILE
하고 그렇지 않으면 겹쳐 씁니다 $HISTFILE
.
OSX (터미널)에 대한 팁
터미널에서 탭을 만들 때마다 ~/.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