GUI 모드에서 사용자가 여러 터미널을 열 때 터미널은 사용자의 기록 파일을 어떻게 다시 쓰나요? 내가 묻는 이유는 사용자가 각 터미널에서 서로 다른 명령을 실행하게 될 가능성이 높기 때문입니다. 그렇다면 기록 파일은 궁극적으로 모든 터미널의 명령을 저장합니까, 아니면 처음 열린 터미널만 저장합니까? 아니면 이 상황을 해결하는 데 사용할 수 있는 다른 유형의 솔루션이 있습니까?
답변1
그것은 모두 쉘이 그것을 처리하기로 선택하는 방법에 달려 있습니다.
bash
기본적으로 각 셸은 종료 시 로컬 기록으로 기록 파일을 덮어쓰므로 마지막에 종료되는 셸이 우선합니다. 이것histappend
옵션을 사용하면 기본 기록( )에 추가됩니다 shopt -s histappend
.
zsh
기본적으로 동일한 작업을 수행하며 이를 처리하기 위한 몇 가지 옵션이 있습니다.
appendhistory
-- 쉘이 종료되면 각 쉘의 기록이 기본 기록 파일에 추가됩니다.incappendhistory
-- 쉘이 종료될 때까지 기다리지 않고 쉘에서 행이 실행될 때마다 기본 기록 파일을 업데이트합니다.sharehistory
-- 유사incappendhistory
하지만 기본 기록 파일의 변경 사항을 실행 중인 모든 셸로 가져오므로 한 셸에서 명령을 실행한 다음 Up다른 셸에서 실행하여 확인할 수 있습니다.
답변2
나는 원래 O'Reilly의 Unix Power Tools 책에서 아이디어를 얻었습니다.
내 .profile
설정에서:
export HISTFILE=$HOME/.sh_hist.$$
내 콘텐츠를 읽을 때마다 .profile
세션 PID 이름을 딴 새 기록 파일을 얻습니다. 여러 로그인이 있는 경우 각 로그인에 대해 고유한 기록 파일을 얻습니다. ksh
및 에서 근무합니다 bash
.
X 세션에서 새 터미널을 열면 일반적으로 이러한 터미널은 로그인 쉘이 아니지만 로그인 쉘로 작동하도록 구성할 수 있습니다. 예를 들어, 로그인 쉘로 시작됩니다 rxvt +ls
. rxvt
사용하는 터미널에 대한 설명서를 확인하세요.
또한 .logout
또는 .bash_logout
파일(또는 다른 수단)을 사용하여 정리하지 않으면 정크 파일이 잔뜩 쌓이게 됩니다 .sh_hist
.
답변3
tcsh
: set savehist = (5000 merge)
병합