![Bash의 기록은 어디에 저장됩니까?](https://linux55.com/image/40197/Bash%EC%9D%98%20%EA%B8%B0%EB%A1%9D%EC%9D%80%20%EC%96%B4%EB%94%94%EC%97%90%20%EC%A0%80%EC%9E%A5%EB%90%A9%EB%8B%88%EA%B9%8C%3F.png)
을 실행하면 history
가장 최근에 실행된 명령을 볼 수 있습니다.
하지만 이렇게 하면 tail -f $HISTFILE
목록 tail -f ~/.bash_history
에 표시되지 않습니다.
파일이 잠겨있나요, 임시 위치가 있나요?
답변1
Bash는 실행되는 동안 메모리 내부에 명령 목록을 유지합니다. 그들은 쓰여있다.bash_history
나갈 때:
대화형 셸이 종료되면 마지막 $HISTSIZE 줄이 기록 목록에서 $HISTFILE이라는 파일로 복사됩니다.
명령 기록을 강제로 기록하려면 다음을 사용할 수 있습니다.history -a
명령은 다음을 수행합니다.
새로운 히스토리 라인(현재 Bash 세션 시작 이후 입력된 히스토리 라인)을 히스토리 파일에 추가합니다.
또 다른 옵션이 있습니다 -w
:
현재 내역 레코드를 내역 파일에 씁니다.
기록을 어떻게 사용하느냐에 따라 이 방법이 더 적합할 수도 있습니다.
항상 즉시 작성되도록 하려면 명령을 PROMPT_COMMAND
변수에 넣을 수 있습니다.
export PROMPT_COMMAND='history -a'
답변2
(답변은 아니지만 코멘트를 추가할 수 없습니다)
.bash_history
일반 텍스트 비밀번호(예: 일반 텍스트 비밀번호 포함)가 포함된 특정 명령을 확인하려는 경우 메모리에서 해당 항목을 직접 삭제하면 됩니다 history -d <entry_id>
.
예를 들어 출력이 다음과 같다고 가정합니다.
$ history
926 ll
927 cd ..
928 export --password=super_secret
929 ll
줄을 정리하려면 export
다음과 같이 하면 됩니다.
history -d 928
답변3
bash는 이를 작업 메모리에 저장하고, bash가 닫힐 때나 각 명령 후에 저장하도록 구성할 수 있으며, bash가 시작되거나 요청 시 로드되도록 구성할 수 있습니다.
각 명령 후에 구성이 저장되면 여러 bash를 동시에 실행할 때의 영향을 고려하십시오. (명령줄은 인터리브됩니다)
답변4
세션이 활성화된 동안 명령은 메모리(RAM)에 보관됩니다. 쉘이 닫히면 .bash_history
닫기 전에 명령 목록이 작성됩니다.
따라서 현재 세션의 기록은 에서 볼 수 없습니다 .bash_history
.