분리된 프로세스 간의 지속적인 Bash 기록

분리된 프로세스 간의 지속적인 Bash 기록

Bash 문서에서는 이 질문을 찾을 수 없으므로 여기에 질문하면 답변을 얻을 수 있기를 바랍니다. 실행되는 동안 스크립트의 기록을 분기할 수 있는 방법이 있습니까(즉, source또는를 사용하지 않고 스크립트를 호출한 상위 프로세스의 셸과 동일한 기록을 가짐 .) 완료되었을 때 기록을 가지지 않습니까 ~/.bash_history?

기록을 기록하지 않는 목적은 스크립트를 호출하기 전 마지막 명령이 스크립트를 호출한 후 마지막에서 두 번째 명령만 되도록 하기 위한 것입니다. 가장 쉬운 방법은 set -o history실행된 명령 수를 기록하고 스크립트 끝에서 해당 행을 삭제하는 것 $HISTFILE입니다.

답변1

쉘 스크립트를 실행하면 Bash 프로세스가 시작됩니다비대화형껍데기. 이 모드에서는 히스토리 확장이 실제로 발생하지 않습니다. Bash 매뉴얼 페이지에서 man bash:

역사적 확장

쉘은 csh의 기록 확장과 유사한 기록 확장 기능을 지원합니다. 이 섹션에서는 사용 가능한 구문 기능에 대해 설명합니다. 이 기능은 대화형 셸에서 기본적으로 활성화되어 있으며 set 내장 명령의 +H 옵션을 사용하여 비활성화할 수 있습니다(아래 SHELL BUILTIN 명령 참조). 기본적으로 비대화형 쉘은 기록 확장을 수행하지 않습니다.

스크립트가 해당 명령을 Bash 기록 파일에 저장하도록 한다는 언급은 없지만 실제로는 그런 일이 발생하는 것을 본 적이 없습니다.

나는 당신이 표준 방식으로 스크립트를 실행한다고 가정합니다(셸 명령을 포함하는 실행 파일로 또는 bash 명령에 대한 인수로 스크립트 이름을 제공하여). 귀하의 질문을 올바르게 설명하지 않은 경우 명확히하기 위해 질문을 편집해 주시겠습니까?

관련 정보