"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
전자는 기억 속에 역사적 사건을 보여주는 반면, 후자는 역사 파일에 기록된 역사적 사건을 담고 있다는 사실에 기인합니다. 히스토리 파일에 기록되는 내용(및 시기)은 다양한 셸 옵션에 따라 달라지며, 지금(위 설명 이후)에는 명확해지기를 바랍니다.