2012-04-02 3 views
0

쉘 스크립트 내에서 명령 기록을 가져 오려고합니다. #!/bin/bash를 꺼내지 않으면 작동하지 않습니다.쉘 스크립트에서 history 명령 사용

#!/bin/bash를 제거하지 않고 동일한 효과를 얻으려면 어떻게해야하는지에 대한 단서가 있습니까?

#!/bin/bash를 제거하는 이유는 누구나 알고 계십니까?

+2

지금까지 수행 한 작업을 Google에 보여 주면됩니다. –

답변

5

셰바 라인을 꺼내면 현재 쉘에서 실행됩니다. Bash는 "대화 형"셸을 사용하지 않는 한보고 할 기록이 없습니다. 셰번 라인을

#!/bin/bash -i 

으로 변경하면 bash이 대화 형 셸을 시작합니다.

+0

흥미 롭습니다. 내 솔루션은 소스 명령을 사용하여 스크립트를 실행하는 것으로 끝났다. #!/bin/bash -i와 소스에서 실행중인 스크립트를 사용하는 것의 차이점은 무엇입니까? – MVTC

+0

@MVTCplusplus 스크립트를 소스로 사용하면 현재 쉘의 컨텍스트에서 실행됩니다. 할당/변경된 모든 변수, 함수 등은 쉘을 실행할 때 볼 수 있습니다 (history 명령을 사용하여 쉘의 히스토리를 변경 한 경우 포함). 새로운 대화식 셸을 시작하면 이러한 변경 사항은 스크립트를 실행하는 셸의 로컬 상태를 유지합니다. 어떤 스크립트를 원 하느냐에 따라 스크립트가 수행해야하는 작업에 따라 달라집니다. 그러나 스크립트를 소싱하는 것도 합리적인 해결책입니다. – FatalError