여러 터미널에 걸쳐 동일한 기록을 저장하거나 유지하려면 어떻게 해야 합니까?
동일한 문제이지만 bash 쉘의 경우 아래 링크에서 논의됩니다.
tcsh 쉘의 해당 설정을 알려주세요.
답변1
이러한 변수는 기록을 덮어쓰지 않고 자체적으로 병합하고 중복 항목을 저장하지 않도록 설정합니다.
set history=1000
set histdup=erase
set savehist=(1000 merge)
비밀 무기는 다음과 같습니다.
alias precmd 'history -S; history -M'
프롬프트를 인쇄하기 전, 즉 모든 명령을 입력한 후에 기록을 저장하고 병합합니다.
위의 모든 사항을 귀하의 계정에 추가해야 합니다..tcshrc문서.
답변2
또한이타미가 대답했다alias precmd 'history -S; history -M'
, SIGINT 및 EOF 신호(Ctrl+C 및 Ctrl+D)도 기록하므로 기록 파일을 엉망으로 만들 수 있다는 점을 덧붙이고 싶습니다 .
더 나은 접근 방식은 명령을 실행한 후 현재 셸 기록을 저장하고 병합하는 것입니다.
tcsh는 SIGINT 또는 EOF를 유효한 명령으로 인식하지 않기 때문에 아래 설정으로 이를 달성할 수 있습니다.
alias postcmd "history -S; history -M"
답변3
단일 글로벌 히스토리 파일은 여러 탭을 동시에 작업할 때 명령 순서를 혼동하기 때문에 일반적으로 필요한 것이 아닙니다.
각 탭의 기록을 유지하려면 다음 방법을 사용하십시오.
set histfile=~/.history_`tty|sed "s#^.*/##"`
set history=1000
set savehist=(${history} merge)
alias postcmd 'history -S'
이렇게 하면 tty ID에 따라 각 탭에 대해 별도의 기록 파일이 생성됩니다.
xfce4-terminal을 사용하여 탭 순서를 변경하지 않고 가장 오른쪽 탭만 닫지 않으면 각 기록이 관련 탭(및 경로)으로 올바르게 복원됩니다. 탭 재정렬에는 tty ID가 제공되지만 xfwm4 세션 복구는 각 탭을 처음부터 다시 생성하므로(0부터 시작하는 새 tty ID 할당) 기록 파일은 "잘못된" 탭으로 복원됩니다(즉, 원본 탭이 아닌 탭) 탭 디렉터리 경로). 이러한 변경 사항을 추적하는 방법에 대한 해결책을 찾지 못했습니다.