명령줄에서 실행하여 동적 함수를 정의합니다.
eval "ab() { echo test; }"
테스트를 실행하고 인쇄합니다.
동일한 명령문을 스크립트에 넣은 test.sh
다음 스크립트를 실행하십시오. 아무 일도하지. 함수가 정의되지 않았습니다.
함수가 스크립트 외부가 아닌 내부에 정의되어 있기 때문인 것 같습니다. 그래서 스크립트를 추가해 보았습니다.
export -f ab
그러나 이것은 작동하지 않습니다. 스크립트에서 쉘로 함수를 내보내는 방법은 무엇입니까?
답변1
함수나 변수를 상위 셸로 내보낼 수 없으며 스크립트를 실행하는 셸이나 하위 셸로만 내보낼 수 있습니다.
현재 쉘 환경을 변경하는 스크립트의 경우 source
스크립트를 사용하거나 실행 해야 합니다 .
. 예를 들어, ./myscript.sh
실행하는 대신. ./myscript.sh
이는 스크립트를 실행하기 위해 하위 쉘을 생성하는 대신 현재 쉘 자체가 스크립트를 실행한다는 것을 알려줍니다. 따라서 스크립트가 현재 환경을 수정할 수 있습니다.