launchd를 사용하여 bash 기록을 지우시겠습니까?

Oct 23 2020

설명 :을 (를) 파괴하려고하지 않습니다. 보안을 위해 history주기적으로 제거 할 수단을 찾고 있습니다.launchd

사용하고 cat /dev/null > ~/.bash_history그렇게 할 수있는 가장 효과적인 방법으로 많은 유닉스 계열의 대화에서 본 명확 bash는 역사.

그래서에서 실행되는 셸 스크립트에 넣었 launchd지만 얼마 후 실행되지만 기록을 지우지 않는다는 것을 깨달았습니다.

이 방법으로 bash 스크립트를 통해 bash 기록을 지울 수 있습니까? 아니면 사용자로서 수동으로 만 수행 할 수 있습니까? 아마도 bash 스크립트가 아닌 .plist에서 직접 명령을 실행해야합니까?

참고 : launchd를 통해 다른 스크립트가 올바르게 실행되고 있으므로 질문은 에이전트를 통해 기록을 지울 수 있는지에 관한 것입니다.

감사합니다

업데이트 : launchd누구에게나 도움이된다면 스크립트 생성에 도움이되는 멋진 사이트를 찾았습니다 . 보증 할 수는 없지만 XML을 해킹하는 것보다 훨씬 쉽습니다. sh -c그래도 모든 명령 에 사용 되는 것처럼 보이 므로 그 이유는 확실하지 않습니다.

plist 생성기 출시 http://launched.zerowidth.com/

답변

5 Seamus Oct 23 2020 at 16:25

당신의 bash역사는 하나가 아닌 두 개의 "역사"로 구성됩니다. 이 기록 중 하나는 파일에 저장되며 크기 / 깊이는 매개 변수에 의해 결정됩니다 HISTFILESIZE. 다른 기록은 메모리에 캐시되며 크기는 매개 변수에 의해 결정됩니다 HISTSIZE.

기록의 크기 / 깊이를 확인할 수 있습니다.

$ echo $HISTFILESIZE 
$ echo $HISTSIZE

두 개의 히스토리가있는 이유는 하나가 각 쉘 세션 ( HISTSIZE) 과 연관되어 있고 다른 히스토리 ~/.bash_history는 "영구적"인 파일 이며 결국 최대 깊이를 초과하거나 세션이 종료 될 때 세션 히스토리를 수신하기 때문입니다. 그것은 설명하기가 약간 복잡하며 아래 그림은이 두 역사 사이의 관계를 명확히하는 데 도움이 될 수 있습니다.

하지만 다시 목표로 돌아갑니다.

기록을 삭제하는 단계를 수행하는 대신 다음을 설정 HISTSIZE하고 HISTFILESIZE0으로 설정할 수 있습니다 ~/.bashrc.

HISTSIZE=0
HISTFILESIZE=0

이것이 원하는 것이 아니라면 주기적으로 기록 파일을 삭제할 수 있지만 세션 기록 은 삭제되지 않습니다 . 파일을 빌드하여 기록 파일을 삭제할 .plist필요는 없습니다. history명령합니다 (이 작업에 사용할 수있는 도구입니다 history --help자세한 내용). 다음 명령은 하나의 세션 기록 을 삭제합니다 .

$ history -cw

히스토리 파일 ( ) 에서 내용 을 삭제하는 ~/.bash_history것은 일반적으로 수행됩니다.

$ > ~/.bash_history

당신은 하나 또는 두 명령을 넣을 수 있습니다 crontab,하지만 당신은 기본 쉘은 확인해야합니다 bash같은 historyA는 내장 .

쉘 역사 주제에 대한 관련 배경을 보려면 이 관련 Q & A를 읽을 수 있습니다. 그것은 관련이 zsh- 아니 bash,하지만 원칙은 동일합니다.

5 jksoegaard Oct 23 2020 at 14:41

bash_history를 원하지 않는 문제에 대한 매우 복잡한 해결책을 찾은 것 같습니다.

정기적으로 시작된 기록을 지우는 대신 기록 기록을 비활성화하는 것이 좋습니다.

echo 'set +o history' >> ~/.bashrc

터미널 탭을 닫고 새 탭을 열면 기록이 더 이상 기록되지 않습니다.