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
명령이 의도적으로 작동하지 않습니다.