명령이 종료되거나 종료된 후에만 bash가 실행될 때 시간 집약적인 명령을 기록에 저장하도록 하려면 어떻게 해야 합니까?

명령이 종료되거나 종료된 후에만 bash가 실행될 때 시간 집약적인 명령을 기록에 저장하도록 하려면 어떻게 해야 합니까?

세션을 종료하기 전에 명령을 저장하는 방법에 대해 비슷한 표현의 질문이 많이 있으며, 이는 다른 질문( PROMPT_COMMAND='history -a'histopt)에 대한 답변입니다. 이것질문예를 들어, 오해의 소지가 있는 표현이 있지만 완전히 입력되지 않은 명령에 대해 이야기합니다.

bash 자동 저장 명령의 초기 트리거에 대해 질문하고 있습니다. 예를 들어, 실행이 완료되지 않은 명령이 이미 포함되어 있는 다른 터미널에서 기록을 확인해야 합니다.

나는 bash 구현이 이것을 직접적으로 수행할 수 없다고 생각합니다. 하지만 물어볼 가치가 있다고 생각합니다.

답변1

몇 가지 아이디어를 따르십시오협회@Henrik은 이 코드를 끝에 넣으면 .bashrc내 문제가 해결되었다고 주석 섹션에서 언급했습니다.

function saveafterenter {
   history -a
}
trap 'saveafterenter' DEBUG

참고: 어떤 사람들은 매뉴얼 페이지의 설명에 따라 ;를 history -c; history -r사용하기도 하는데 이는 좋은 생각이 아닌 것 같습니다. history -a이는 다른 세션의 생존 기록에 영향을 미칩니다. 우리는 일반적으로 이러한 동작을 원하지 않습니다. 각 세션이 닫힐 때까지 기록을 독립적으로 분기하고 마지막 명령을 기록 파일 끝에 추가하는 것이 더 유용한 경우가 많습니다. 인터리브 세션은 파일에 추가되는 명령을 대체합니다.

관련 정보