bash에서 내보낸 함수 동작이 변경되었나요?

bash에서 내보낸 함수 동작이 변경되었나요?

저는 몇 가지 다른 플랫폼에서 작동하는 일부 bash 스크립트를 유지하려고 합니다. 설명할 수 없는 함수를 내보내는 데 이상한 문제가 있습니다. 다음 테스트 스크립트:

#!/bin/bash                                                                          
function test_fn() {                                                                   
    echo "In test_fn()"
}                                                                                  
export -f test_fn                                                             
echo test1 test2 |  xargs -d ' ' -n1 -I{} bash -c "test_fn {}" 

bash 4.1과 4.3에서는 동작이 다릅니다. 이유가 확실하지 않습니다.

$ /bin/bash test-fn.sh
bash: test_fn: command not found
$ /bin/bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
$ bash test-fn.sh
In test_fn()
In test_fn()
$ bash --version
GNU bash, version 4.3.39(1)-release (x86_64-unknown-linux-gnu)

이것이 쉘 쇼크 수리의 효과일 수 있습니까?

관련 정보