zsh에서는 역사가 보존되지 않습니다


16

터미널의 새 인스턴스를 열 때마다 기록이 비어 있습니다. 왜 그런 겁니까? 무언가를 설정해야합니까? bash에서는 이것을 필요로하지 않습니다.


확실하지에 대한 zsh,하지만 기본으로 bash따라 자신의 기록 파일에 대한 쓰기 종료 당신이 전에 그것을 사용하고 약간의 껍질을 열 수없는 경우 수단, 그들은 지금 역사는 적어도 하나의 로그 아웃 할 때까지, 따라서 그것의 역사 파일을 모든 쇼를 작성합니다.
DopeGhoti

답변:


24

Bash와 zsh의 기본값은 서로 다릅니다. Zsh는 기본적으로 기록을 파일에 저장하지 않습니다.

구성 파일없이 zsh를 실행하면 구성 인터페이스가 표시됩니다. 이 구성 인터페이스에서

(1)  Configure settings for history, i.e. command lines remembered
     and saved by the shell.  (Recommended.)

그런 다음 제안 된 설정을 검토하고

# (0)  Remember edits and return to main menu (does not save file yet)

(2) 완료, (3) 키 바인딩 및 (4) 옵션에 대해 다른 하위 메뉴에 대해 반복 한 다음

(0)  Exit, saving the new settings.  They will take effect immediately.

메인 메뉴에서.

권장 기록 관련 설정은

HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt appendhistory

히스토리 파일에 다른 이름을 사용하여 zsh의 히스토리 파일임을 표시합니다. 그리고 현대 시스템에서 1000 라인을 늘릴 수 있습니다.

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory

그건 ~/.zshrc그렇고, 이 라인은로 들어갑니다 .


8

기존의 대답은 정확하지만 appendhistory역사를 저장하는 것보다 더 나은 옵션이 있다는 것이 추가 가치가 있다고 생각했습니다 SHARE_HISTORY.

문서에서 SHARE_HISTORY"둘 다 내역 파일에서 새 명령을 가져오고 입력 한 명령이 내역 파일에 추가됩니다". 이것은 현재 쉘을 닫거나 새로운 쉘을 열지 않고도 쉘이 서로의 히스토리를 인식 함을 의미합니다.

따라서 모두 함께 다음과 같이 설정했습니다.

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=1000
setopt SHARE_HISTORY

1
+1하고 U / L에 오신 것을 환영하지만 개인적으로 나는 INC_APPEND_HISTORY_TIME위와 같이 모든 터미널에서 히스토리에 쓰는 것을 선호 하지만 그 히스토리는 "같은 히스토리 파일을 사용하는 쉘의 다른 인스턴스에서 즉시 사용할 수 없습니다". 각 터미널의 기록을 독립적으로 탐색 할 수 있지만 여전히 기록되어 있기 때문에 이것은 더 의미가 있습니다.
Sparhawk

2
감사! 그래, 그것은 충분히 공평하고 왜 INC_APPEND_HISTORY_TIME더 논리적 인 의미가 있는지 완전히 알 수 있습니다. 아마 "더 나은"이라고 말해서는 안됩니다.이 시점에서 그것은 개인적인 취향의 문제 일뿐입니다!
bert September

0

bash에서 zsh로 처음 전환하면 bash 기록이 이월되지 않습니다. 따라서 bash에있는 모든 기록은 여전히 ​​bash의 기록 파일에 있습니다. zsh는 쉘로 사용하기 시작한 시점부터 히스토리 캡처를 시작합니다.

히스토리를 캡처하도록 설정하지 않은 경우 구성 마법사를 다시 실행하고 zsh에 저장할 히스토리 양을 알려줄 수 있습니다. ~ / .zshrc의 이름을 변경하거나 삭제하여 마법사에서 새 장면을 얻으십시오.


0

작동하지 않고이 모든 것이 이미있는 경우 다음을 시도하십시오.

fc -W

현재 내역을 내역 파일에 기록합니다. 그리고 당신이 얻는다면 :

zsh: locking failed for /home/username/.zsh_history: permission denied

이제 파일 부모 디렉토리에 대한 권한을 점검 할 차례 입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.