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 zshoptions는 man 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.