히스토리가 서브셸에 아무것도 출력하지 않는 이유는 무엇입니까?

히스토리가 서브셸에 아무것도 출력하지 않는 이유는 무엇입니까?

history방금 서브쉘에는 아무 것도 출력되지 않는다는 것을 깨달았습니다 . 행 수를 세어 이를 보여주려고 합니다. 먼저 echo를 온전한 검사로 사용합니다.

$ echo a | wc -l
1

...그리고 서브셸에서:

bash -c 'echo a' | wc -l
1

실제로 우리는 두 경우 모두 단일 출력 라인을 기대합니다. 지금은 history:

$ history | wc -l
681

...하지만 서브셸에서는 다음과 같습니다.

$ bash -c 'history' | wc -l
0

... history행을 반환하지 않습니다.

history왜 이런 일이 발생합니까? 서브셸에서 현재 셸(마지막 세션 명령 포함)의 기록을 어떻게 인쇄합니까 ?

답변1

-c하나도 만들지 마세요서브쉘;단순히 새로운 비대화형 쉘(또는 현재 쉘과 독립적인 별도의 프로세스에서 비대화형 실행 환경)을 생성합니다. 그리고: 비대화형 셸에서는 이 history명령이 의도적으로 작동하지 않습니다.

Bash 스크립트의 기록 명령

관련 정보