Bash 문서에서는 이 질문을 찾을 수 없으므로 여기에 질문하면 답변을 얻을 수 있기를 바랍니다. 실행되는 동안 스크립트의 기록을 분기할 수 있는 방법이 있습니까(즉, source
또는를 사용하지 않고 스크립트를 호출한 상위 프로세스의 셸과 동일한 기록을 가짐 .
) 완료되었을 때 기록을 가지지 않습니까 ~/.bash_history
?
기록을 기록하지 않는 목적은 스크립트를 호출하기 전 마지막 명령이 스크립트를 호출한 후 마지막에서 두 번째 명령만 되도록 하기 위한 것입니다. 가장 쉬운 방법은 set -o history
실행된 명령 수를 기록하고 스크립트 끝에서 해당 행을 삭제하는 것 $HISTFILE
입니다.
답변1
쉘 스크립트를 실행하면 Bash 프로세스가 시작됩니다비대화형껍데기. 이 모드에서는 히스토리 확장이 실제로 발생하지 않습니다. Bash 매뉴얼 페이지에서 man bash
:
역사적 확장
쉘은 csh의 기록 확장과 유사한 기록 확장 기능을 지원합니다. 이 섹션에서는 사용 가능한 구문 기능에 대해 설명합니다. 이 기능은 대화형 셸에서 기본적으로 활성화되어 있으며 set 내장 명령의 +H 옵션을 사용하여 비활성화할 수 있습니다(아래 SHELL BUILTIN 명령 참조). 기본적으로 비대화형 쉘은 기록 확장을 수행하지 않습니다.
스크립트가 해당 명령을 Bash 기록 파일에 저장하도록 한다는 언급은 없지만 실제로는 그런 일이 발생하는 것을 본 적이 없습니다.
나는 당신이 표준 방식으로 스크립트를 실행한다고 가정합니다(셸 명령을 포함하는 실행 파일로 또는 bash 명령에 대한 인수로 스크립트 이름을 제공하여). 귀하의 질문을 올바르게 설명하지 않은 경우 명확히하기 위해 질문을 편집해 주시겠습니까?