히스토리 명령은 어떻게 작동합니까?


8

터미널에 명령을 입력하면 ~/.bash_history세션을 종료 할 때까지 파일에 나타나지 않습니다 .

또한 ~/.bash_history파일을 수동으로 편집 할 때 (예 : 마지막 세 명령 제거) 파일을 입력 history해도 여전히 ~/.bash_history파일 에서 제거한 명령이 표시 됩니다. 세션을 종료하고 다시 로그인 할 때만 사라집니다.

내 어떻게 않는 ~/.bash_history파일과 history명령은 동기 얻을?


2
그것은 RAM에 있습니다 ... bash의 기록은 어디에 저장됩니까?
잔나

"터미널에 명령을 입력 할 때"실제로는 사실이 아닙니다. 기본적으로 명령 앞에 공백을 넣으면 해당 명령이 저장되지 않습니다.
Rinzwind

@Rinzwind HISTCONTROL 환경 변수의 값을 편집하여 앞에 공백이 있어도 명령 저장 동작을 변경할 수 있습니다.
sys0dm1n

@ sys0dm1n "기본적으로"
Rinzwind

답변:


10

bash 터미널을 열면 ~/.bash_history해당 쉘에서 실행 된 모든 명령을 파일이 아닌 그 쉘에 추가하여 RAM에있는 활성 쉘 히스토리 의 내용을로드 하고 빌드합니다.

bash 터미널을 닫을 때만 히스토리가 ~/.bash_history파일에 추가 됩니다.


옵션 history:

history -a # save the active shell's history to ~/.bash_history (appending)
history -c # clear the active shell's history
history -d NNN # delete row NNN of the active shell's history
history -r # reload the active shell's history from ~/.bash_history (appending)
history -w # save the active shell's history to ~/.bash_history (overwriting)

~/.bashrc파일 옵션

~/.bash_history명령을 실행 한 후 임시 히스토리가 직접 저장되도록이 동작을 변경하려면 다음 행을 추가하십시오.

PROMPT_COMMAND="history -a"

~/.bash_history모든 명령 실행 후 모든 터미널이 자동으로 파일을 로드하도록하려면 다음 줄을 대신 추가하십시오.

PROMPT_COMMAND="history -a; history -c; history -r"

특정 명령 (예 : sudo및로 시작하는 모든 것 cat)을 저장하지 않으려면 다음 줄을 추가하십시오.

HISTIGNORE="sudo*:cat*"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.