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)

これはシェルショック修理の効果かもしれませんか?

ベストアンサー1

おすすめ記事