다음의 잘 알려진 스니펫에서 bash 기록을 저장하기 위한 "history -c;"에 대한 설명

다음의 잘 알려진 스니펫에서 bash 기록을 저장하기 위한 "history -c;"에 대한 설명

여러 tmux 창을 열 때 기록의 모든 내용을 유지하기 위해 .bashrc 파일에서 다음 코드를 사용합니다.

# Avoid duplicates
HISTCONTROL=ignoredups:erasedups
# When the shell exits, append to the history file instead of overwriting it
shopt -s histappend

# After each command, append to the history file and reread it
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

내 리눅스 컴퓨터에는 아무런 문제가 없습니다. 그러나 macOS에서는 tmux와 함께 단독으로 사용할 때 몇 가지 문제가 발생합니다(즉, 여러 개의 개방형 비동기 터미널이 tmux 없이도 잘 작동함을 의미).

그러면 tmux의 새 창에는 완전히 빈 기록이 있게 됩니다.

문제의 참고 댓글입니다여러 터미널 창에서 bash 기록 유지, macOS에서 유사한 프로그램을 사용하면 동일한 문제가 나타납니다 screen.

댓글 참고

history -c;명령의 일부를 제거하려고 시도했는데 이제 새 tmux 창의 기록이 비어 있지 않습니다. 그러나 이것이 실행 가능한 솔루션인지, 어떤 경고가 있을 수 있는지 잘 모르겠습니다. 그래서 나의 주요 질문은 이 캐릭터가 어떤 역할을 하고 history -c왜 필요한가입니다.

노트:문제를 재현할 수 없는 경우 알려주시면 OS 버전, 프로그램 버전, 로그를 제공해 드리겠습니다.

답변1

history -c간단하고 짧은 대답은 a 이전에 수행하지 않으면 history -r기록을 읽게 된다는 것 입니다.두 배.

마지막 명령(및 해당 번호)은 다음과 같이 제공됩니다 fc -l -1.

$ fc -l -1

19131    clear

역사를 읽으면문서이번에도 대부분의 기록을 복사합니다(파일이 아닌 메모리에 있음).

$ history -r; fc -l -1

38319    fc -l -1

그것이 소유하고 사용하는 이유이다 history -c.

빈 역사

그러면 tmux의 새 창에는 완전히 빈 기록이 있게 됩니다. 해결책은 매우 간단해야 합니다.

history -r

그리고 기록 파일의 모든 기록 기록은 메모리에 다시 나타납니다.

관련 정보