zsh의 명령 히스토리


32

현재 zsh는 모든 세션에서 즉시 명령 기록을 공유하는 방식으로 설정되었습니다.

각각 zsh 세션 A1과 A2가있는 두 개의 탭이있는 터미널 에뮬레이터가 열려 있다고 가정하겠습니다. A1에 ls -la 를 입력 한 다음 A2로 이동하고 위쪽 화살표 키를 누르면 명령 프롬프트에 ls -la 가 표시 됩니다.

나는 세션이 서로 명령 기록을 공유하지 않도록 변경하고자 하지만, 새로운 세션을 시작할 때 그것을하기 전에 모든 세션에서 이전의 모든 역사를 가져옵니다.


나는 그것을 정기적으로한다. 그러나 여전히 만족스러운 답변이없는 많은 질문이 있습니다.
Art

좋은 질문과 유용한 답변. 나는 이것이 iTerm2 일이라고 생각했습니다. 그들이 같은 가정을한다면이 의견이 누군가에게 이런 식으로 작용하기를 바랍니다.
Alan H.

답변:


40

아마도 INC_APPEND_HISTORY설정 되었을 것 입니다.

INC_APPEND_HISTORY옵션에서 man zshoptions:

이 옵션은 쉘이 종료 될 때까지 기다리지 않고 새 히스토리 행이 $ HISTFILE에 입력되는 즉시 점진적으로 추가된다는 점을 제외하고 APPEND_HISTORY와 같이 작동합니다.

원하는 옵션은 APPEND_HISTORY다음과 같습니다.

APPEND_HISTORY 이것이 설정되면 zsh 세션은 기록 파일을 기록하지 않고 기록 파일에 추가합니다. 따라서 여러 병렬 zsh 세션에는 히스토리 목록의 새 항목이 모두 종료 순서대로 히스토리 파일에 추가됩니다. 줄 수가 $ SAVEHIST에 의해 지정된 값보다 20 % 증가 할 때 파일을 자르기 위해 파일은 여전히 ​​주기적으로 다시 작성됩니다 (HIST SAVE BY COPY 옵션 참조).

이러한 옵션에 대한 정보 man zshoptionsman zshall온라인 또는 여기를 참조하십시오 .

이를 설정하려면 ~/.zshrc다음이 있어야합니다.

setopt APPEND_HISTORY

당신이 사용하는 경우,주의하십시오 오 - 내 - zsh을을 기본적으로 저는 믿습니다, INC_APPEND_HISTORY사용됩니다. 나는 일이로드되는 주위를 확인하는 방법은 100 % 아니에요,하지만 경우에 oh-my-zsh옵션을 사용하면이 설정 한 하나를 우선 ~/.zshrc, 당신은에서 바이올린 수 있습니다~/.oh-my-zsh/lib/history.zsh


echo unsetopt INC_APPEND_HISTORY >~/.oh-my-zsh/custom/history.zsh
youfu

다시 시작한 후 (zsh 및 oh-my-zsh의) 개별 탭 기록을 복원하도록 iTerm2를 어떻게 구성 할 수 있습니까?
Googol

10

허용 된 답변에 추가하려면을 사용하는 경우 기본적으로 옵션이 활성화되어 oh-my-zsh있을 수 SHARE_HISTORY있습니다.

새로 열린 터미널에서 실행중인 쉘과 전체 히스토리를 분리하려면 다음 행을 주석 처리하거나 제거해야합니다.

setopt share_history # share command history data

...에서 ~/.oh-my-zsh/lib/history.zsh


내 경우에는, history.zsh 파일의 경로는~/.antigen/repos/https-COLON--SLASH--SLASH-github.com-SLASH-robbyrussell-SLASH-oh-my-zsh.git/lib/history.zsh
suzanshakya

3
그것에 대한 또 다른 방법 unsetopt share_history은 당신의 .zshrc애프터 oh-my-zsh를 넣는 것입니다. 여기에 문서화되어 있습니다 .
counterbeing

@counterbeing 덕분에 저를 위해 고쳤습니다. 별도의 답변을 만들어야합니다.이를 해결하는 가장 쉬운 방법입니다.
jcollum
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.