C/C++ 프로그램에서 Bash 환경에서 Bash 함수를 정의해야합니다. 셸 쇼크 버그 전에, 나는 이런 식으로 함수를 정의 할 수 있습니다 : C 프로그램에서 해당환경에 Bash 함수 설정
my_func='() { echo "This is my function";}'
또는를 :
setenv("my_func", "() { echo \"This is my function\";}", 1);
또는
putenv("my_func=() { echo \"This is my function\";}");
그러나이 배쉬 버전을 사용
shellshock으로 고정되었으므로 환경에서 함수를 정의하는 방법을 관리 할 수 없습니다.
이상한 점은 env
을 실행하면 환경에 정의 된 함수를 볼 수 있지만 호출하면 배쉬는 존재하지 않는다고 말합니다.
미리 감사드립니다.
가 이상한 : 기능을 내보내는 내부 및 문서화되지 않은 방법을 아는 사람은의와 문서화 방법을 알고하지 않습니다 'declare' 또는'export' ... – jm666
@ jm666은''export -f''에 대해 이미 알고 있지만 C 프로그램을 통해 프로그래밍 할 필요가 있습니다. 나는''putenv'' 또는''setenv''없이 C 프로그램에서 환경으로 함수 정의를 내보내는 방법을 모른다.귀하의 답변을 주셔서 감사합니다 – JoseLSegura
훨씬 더 휴대용 같은 방식으로, 어떻게 작동 할 수 있습니다 예. 'bash'가없는 환경에서는 plain-old-shell, dash, ksh, zsh 등이 있습니다. 따라서 @ starrify가 이미 알려준대로 소스를 원할 것입니다 ... – jm666