답변:
을 사용 zsh하면 다음을 수행 할 수 있습니다.
mkdir -p ~/.zsh/dirhist
~ / .zshrc에 추가하십시오.
HISTSIZE=1000
SAVEHIST=10000
setopt HIST_SAVE_NO_DUPS INC_APPEND_HISTORY
HISTFILE=~/.zsh/dirhist/${PWD//\//@}
chpwd() {
[[ $PWD = $OLDPWD ]] || fc -Pp ~/.zsh/dirhist/${PWD//\//@}
}
chpwd()현재 디렉토리가 변경 될 때마다 호출됩니다. 거기에서 우리는 ~/.zsh/dirhist/@foo@bar당신 cd이 할 때 와 같은 기록 파일을 재설정합니다 /foo/bar.
깔끔한 대답은 아니지만 bash쉘로 사용하는 경우 대안 .bashrc입니다.에 별명을 만들 수 있습니다 .
예를 들어 :
alias a='cd /tmp/A ; history -w ; history -c ; export HISTFILE=/home/user/.a_history ; history -r $HISTFILE'
alias b='cd /tmp/B ; history -w ; history -c ; export HISTFILE=/home/user/.b_history ; history -r $HISTFILE'
그런 다음 입력하면 a:
history -w)history -c)/home/user/.a_history( history -r) 로 설정 되고 읽 힙니다.HISTFILE. 다른 프로그램으로 내보낼 이유가 없으며 ~ / .bashrc는 모든 대화 형 bash 프로세스마다 실행되므로 설정을위한 코드는 모든 bash에서 실행됩니다. 일반적으로 쉘 정의 변수가 기본적으로 내보내지지 않으면 거의 내 보내지 않아야합니다.
ZSH를 사용하는 경우 최근에 이것을 처리하기 위해 작성한이 작은 플러그인을 살펴보십시오.
https://github.com/ericfreese/zsh-cwd-history
HISTFILE명령을 실행 한 모든 디렉토리에 대해 별도의 정보 를 저장하고 디렉토리 를 변경할 때 s chpwd를 전환하기 위한 후크를 추가합니다 HISTFILE.
또한 HISTFILE원래 "전역" HISTFILE과 HISTFILE현재 작업 디렉토리 사이 를 전환하는 키 누르기에 바인딩 할 수있는 zle 위젯을 제공합니다 .
원래 Jim Hester의 디렉토리 별 히스토리 플러그인을 기반으로 했지만 그 플러그인의 많은 문제를 해결하기 위해 처음부터 다시 작성되었습니다.
나는 당신이 원하는 것을하는 ZSH 플러그인을 작성했습니다 : https://github.com/tymm/zsh-directory-history
다른 솔루션과 달리 내 플러그인은 자동으로 전역 기록으로 돌아갑니다. 즉, 디렉토리 기록과 전역 기록간에 전환 할 필요가 없습니다.
그러나 다른 솔루션은 조금 더 가볍습니다.