"history -D" 명령이 표시하지만 .zsh_history의 기간 열이 일반적으로 0인 이유는 무엇입니까?

"history -D" 명령이 표시하지만 .zsh_history의 기간 열이 일반적으로 0인 이유는 무엇입니까?

"history -D" 명령이 표시하지만 .zsh_history의 기간 열이 일반적으로 0인 이유는 무엇입니까?

테스트 후이 답변도착하다.zsh_history의 숫자 타임스탬프 뒤에 "0"이 있는 열의 목적은 무엇입니까?명령이 명령이 실행된 기간을 표시 하지만 history -D기간 열은 ~/.zsh_history여전히 ​​표시됩니다 0.

그 이유는 무엇입니까?

~/.zsh_history파일이 초기 명령에서 업데이트되지만 이후에는 업데이트되지 않기 때문입니까 , 아니면 history -D별도의 위치(예: 메모리 또는 다른 파일)에서 시간을 가져오기 때문입니까?

답변1

이전 질문에 따라 설정을 살펴보면 동일한 문제가 발생했습니다. 이전 질문에 대한 답변으로 저는 zsh기본 설정으로 셸 세션을 사용하고 있으며 활성화되면 EXTENDED_HISTORY셸 세션이 종료된 후 올바르게 쓰기 기간을 볼 수 있습니다( $HISTFILE기본적으로 메모리 내 기록은 문서에 기록됩니다). 그러나 내 $HISTFILE파일 에서는 EXTENDED_HISTORY.

zsh-users메일링 리스트를 쿼리한 SHARE_HISTORY결과 쉘 옵션(여러 동시 쉘 세션 간에 동일한 명령 기록을 공유하기 위해)도 사용하고 있었기 때문에 기간이 기록 파일에 기록되지 않은 것으로 나타났습니다. 이 SHARE_HISTORY옵션을 사용하면 역사적 사건이 기록되기 때문입니다.구현하다in보다는 명령종료명령 또는 셸 세션의 시간입니다(기간을 사용할 수 있는 경우). 이 동작은 활성화 와 유사 INC_APPEND_HISTORY하지만 다른 세션의 새 명령도 현재 셸의 기록으로 읽혀집니다.

그러나 또 다른 셸 옵션이 있습니다 INC_APPEND_HISTORY_TIME(끝 부분에 있는 옵션에 유의하세요 _TIME).호환되지 않는SHARE_HISTORY및 를 사용하면 INC_APPEND_HISTORY명령이 예상한 대로 종료된 후 파일에 기록 이벤트가 추가됩니다.

설명서에는 zshoptions(1)다음과 같이 나와 있습니다.

INC_APPEND_HISTORY_TIME
INC_APPEND_HISTORY이 옵션 은 가능한 경우 명령이 완료된 후 기록 항목을 파일에 기록하여 명령에 소요된 시간이 EXTENDED_HISTORY 기록 파일에 형식으로 올바르게 기록되도록 하는 변형입니다 . 이는 동일한 기록 파일을 사용하는 셸의 다른 인스턴스에서 기록 항목을 즉시 사용할 수 없음을 의미합니다.

INC_APPEND_HISTORY이 옵션은 SHARE_HISTORY및가 꺼져 있는 경우에만 유용합니다. 이 세 가지 옵션은 상호 배타적인 것으로 간주되어야 합니다.

INC_APPEND_HISTORY_TIME여러 동시 셸 세션 간에 기록을 사용하고 계속 공유할 수 있는 경우 SHARE_HISTORY이 옵션에 대한 문서에서는 fc -RI필요할 때 다른 셸에서 이벤트를 읽기 위해 셸에서 이를 사용하도록 권장합니다.

명령을 가져올 때 더 많은 제어가 필요하다고 판단되면 해당 명령을 끄 SHARE_HISTORY거나 INC_APPEND_HISTORY켠 다음 INC_APPEND_HISTORY_TIME(위 참조) 을 사용할 수 있습니다 fc -RI.

출력 과 콘텐츠 history -D의 차이는 $HISTFILE전자는 기억 속에 역사적 사건을 보여주는 반면, 후자는 역사 파일에 기록된 역사적 사건을 담고 있다는 사실에 기인합니다. 히스토리 파일에 기록되는 내용(및 시기)은 다양한 셸 옵션에 따라 달라지며, 지금(위 설명 이후)에는 명확해지기를 바랍니다.

관련 정보