![히스토리가 서브셸에 아무것도 출력하지 않는 이유는 무엇입니까?](https://linux55.com/image/199209/%ED%9E%88%EC%8A%A4%ED%86%A0%EB%A6%AC%EA%B0%80%20%EC%84%9C%EB%B8%8C%EC%85%B8%EC%97%90%20%EC%95%84%EB%AC%B4%EA%B2%83%EB%8F%84%20%EC%B6%9C%EB%A0%A5%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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
명령이 의도적으로 작동하지 않습니다.