SunOS 5.10 서버에 여러 개의 PuTTy 세션이 열려 있고 ksh를 사용하고 있는데 때로는 명령 기록이 다른 세션 간에 공유되지만 때로는 그렇지 않습니다. 공유 여부를 결정하는 요소가 무엇인지 알 수 없습니다. 공유란 한 세션에서 실행된 명령이 다른 세션에서 실행된 이전 명령으로 표시된다는 의미입니다.
공유하지 않는 것이 좋습니다. 이에 대한 구성 설정이 있나요?
답변1
대부분의 Unix 쉘은 쉘이 시작될 때 파일에서 이전 기록을 한 번 읽고 해당 쉘을 닫으면 기록이 파일에 다시 기록됩니다.
일반적으로 이전 내용은 단순히 덮어쓰게 되므로 다음과 같은 작업을 수행하면...
- 세션 A와 B에 로그인
- A와 B는 같은 내용을 읽었습니다.
~/.history
- A와 B는 같은 내용을 읽었습니다.
test
A에서 명령 실행- A는
test
메모리 내 기록에 추가합니다. - B는 명령에 대해 모른다
- A는
- A에서 로그아웃
- A는
~/.history
해당 기록을 덮어씁니다.test
- A는
- 세션 C에 로그인
- C는 , 의 내용을 읽습니다
~/.history
.test
- C는 , 의 내용을 읽습니다
- B에서 로그아웃
- B는
~/.history
기록이 없는 기록으로 덮어씁니다.test
- B는
- C에서 로그아웃
- C는
~/.history
자신의 기록을 덮어씁니다.test
- C는
test
3단계 이후 히스토리 파일에 저장되지만 5단계에서는 삭제되고 6단계에서는 다시 추가됩니다 ...
일부 쉘에는 이를 방지하는 "기록 추가" 옵션이 있습니다(예: shopt -s histappend
Bash).
완전히 별도의 기록을 갖고 싶다면, 쉬운 방법은 기록 파일을 /dev/null
.