Bash의 기록은 어디에 저장됩니까?

Bash의 기록은 어디에 저장됩니까?

을 실행하면 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.

관련 정보