왜 bash 기록을 삭제하는 것만으로는 충분하지 않습니까?


15

bash 기록을 삭제하면 bash 기록을 지우는 데 충분하다고 생각했지만 어제 고양이가 키보드 오른쪽을 엉망으로하고 있었고 컴퓨터로 돌아 왔을 때 한 달 전에 입력 한 것을 보았습니다. 그것을 유발할 수있는 것을 찾고 미친 것처럼 모든 키를 누르십시오. .bash_history를 삭제 한 후에도 UPARROW 키가 내 bash 기록을 보여줍니다.

실제 배쉬 기록을 어떻게 삭제합니까?


8
bash 쉘을 닫을 때마다 .bash_history를 겹쳐 씁니다. 따라서 bash를 시작하고 .bash_history를 삭제하고 로그 오프하면 아무 것도 달성하지 못합니다.
Shadur

14
당신의 고양이는 큰 보상을받을 가치가 있습니다. 커맨드 라인 리콜 및 편집을 발견하지 않고 오랫동안 bash를 사용 하고 있습니까? 매번 또는 무엇이든 모든 명령 줄을 처음부터 다시 입력합니까? 그것은 쉘을 사용하는 것이 매우 불쾌하게 만듭니다.
cas

@cas 10 년. 이제 명령을 반복하기 위해 Uparrow를 눌렀지만 몇 줄을 넘지 않는 일종의 '단기'메모리로 이해했습니다. .bash_history를 삭제해도 bash 기록이 삭제되지는 않습니다.
bunden

삭제하면 ~/.bash_history실제로 삭제됩니다 ~/.bash_history....하지만 ( history -c로그 아웃 또는 설정 HISTFILE=/dev/null직전 또는 실행 직전 에 실행하여 메모리 내 기록을 지우는 등의 조치를 취하지 않는 한 unset) bash는 종료 할 때 현재 기록을 다시 저장합니다 . BTW, HISTSIZEenv var는 bash에 메모리에 보관할 행 수를 표시하고 HISTFILESIZEbash에 저장할 최대 행 수를 지정합니다. 둘 다 예를 들어,에 설정할 수 있습니다 ~/.bashrc. 추신 : 당신의 고양이는 당신에게 귀중한 교훈을 가르치는 것에 대해 두 번째 보상을받을 자격이 있습니다 :)
cas

@ cas .bash_history를 삭제하면 bash 기록이 삭제되어야한다고 생각합니다. 나에게는 직관적 인 것 같습니다. 직관적으로 보이지 않는 것은 history -c, history -w, 변수 설정 해제입니다. 이는 사용자 경험의 관점에서 볼 때 중요합니다.
bunden

답변:


26

어떤 경우에는 (일부 bash 버전) 다음을 수행하십시오.

$ history -c; history -w

아니면 간단히

$ history -cw

메모리에 기록을 지우 것이다 (위쪽 및 아래쪽 화살표 목록에 아무 명령도지지 않습니다) 다음 쓰기 받는 $HISTFILE파일합니다 (이 경우 $HISTFILE실행중인 bash는 인스턴스에 의해 잘립니다).

때로는 bash가 unset 옵션을 설정하고 0으로 설정 하더라도 파일을 자르지 않기로 선택합니다 .$HISTFILEhistappend$HISFILEZIZE

이러한 경우 nuke 옵션은 항상 작동합니다.

history -c; >$HISTFILE

메모리에 기록 된 명령 및 이전에 파일에 기록 된 모든 명령의 기록 목록을 지 웁니다. 이렇게하면 실행중인 쉘에 메모리 나 디스크에 기록 된 기록이없는 것이 보장되지만, 실행중인 다른 bash 인스턴스 (기록이 활성화 된)에는 $HISTFILEbash가 시작될 때 (또는 a history -r가 실행될 때) 읽은 명령의 전체 사본이있을 수 있습니다. .

이 경우 기록 파일에 기록 될 것입니다 본 세션의 다른 아무 것도 (새로운 명령)을 할 필요가 없습니다, 다음, unset HISTFILE이러한 기록을 방지 할 수 있습니다.


1
HISTFILE을 편집하고 수행 history -c && history -r하면 현재 기록이 수동으로 수정 된 기록으로 바뀝니다 . 어떤 경우에는 모든 역사를 버리는 것보다 낫습니다.
Mikko Rantalainen

9

bash종료시 쉘 변수 HISTFILE가 파일 이름으로 설정된 경우 파일에 기록되는 세션 기록이 메모리에 bash있습니다.

로 지정된 파일을 삭제하고 HISTFILE해당 변수를 설정 해제 bash한 다음 종료 하면 해당 셸 세션이 영구 히스토리를 남기지 않습니다.

HISTFILE변수 를 설정 해제하지 않고 파일을 삭제 하지 않으면 영구 히스토리가 비워 지지만 쉘이 종료되면 현재 세션 히스토리가 저장됩니다.


3
A history -c; history -w는 메모리와 파일 기록을 모두 지 웁니다. HISTFILE 설정 해제는 추가 명령이 기록에 기록되지 않아야하는 경우에만 필요합니다 (IMhO에 요청 된 내용이 아님).
Isaac

-1

"실제 bash 기록을 어떻게 삭제합니까?"

bash를 종료하고 다른 쉘을 시작한 후 bash 기록 파일을 삭제하십시오.

또는

로그 아웃하고 기록 파일에 대한 쓰기 권한이있는 다른 계정으로 로그인 한 다음 기록 파일을 삭제하십시오.


-2

껍질을 남기면서 한 번에 모두 수행하십시오.

echo "" > ~/.bash_history && history -c && exit

@roaima, 당신은 확실히 맞습니다, 감사합니다. 수정했습니다.
user853069
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.