~/.bash_history의 작동 메커니즘에 대한 약간의 혼란

~/.bash_history의 작동 메커니즘에 대한 약간의 혼란

여러 터미널에서 작업할 때 ~/.bash_history에 무엇이 있는지 혼란스럽습니다. 다른 터미널에 기록을 어떻게 저장합니까?

답변1

기본적으로 기록 파일은 시작 시에만 읽고 종료 시에만 기록됩니다. 따라서 동시에 여러 셸을 시작하면 마지막 셸이 종료된 시점의 기록만 유지됩니다. 생성된 나머지 기록은 덮어쓰게 됩니다.

여러 가지 방법으로 이 동작을 조정할 수 있습니다. 하나는 shopt -s histappend.bashrc에 추가하는 것입니다 . 이 옵션을 사용하면 쉘이 종료될 때 기록 파일을 덮어쓰지 않고 추가하게 됩니다.

PROMPT_COMMAND의 환경 변수 에 다음을 추가하여 각 명령 후에 bash가 추가 작업을 수행하도록 하여 이 동작을 추가로 조정할 수 있습니다 . 이렇게 하면 프롬프트가 인쇄될 때마다 명령이 실행됩니다..bashrcexport PROMPT_COMMAND="history -a;"history -a

위의 두 가지 조정을 사용하면 열려 있는 쉘 수에 관계없이 bash 기록 파일이 각 쉘에 계속 추가됩니다. 기록 파일은 시작 시에만 읽혀지기 때문에 각 쉘은 다른 쉘이 실행하는 명령을 볼 수 없다는 점에 유의하는 것이 중요합니다. 를 호출하여 셸의 현재 기록에서 이러한 항목을 수동으로 읽을 수 있지만 history -n여러 셸이 지속적으로 연결된 상태에서 이 작업을 수행할 때 몇 가지 이상한 점을 발견했습니다. 이를 자동화하고 기록에 많은 관심을 기울이려고 한다면 주의하세요.

관련 정보