繰り返しなしで関数を定義してエクスポートする

繰り返しなしで関数を定義してエクスポートする

私はこれができることを知っています:

function foo() { echo "foo"; }; export -f foo

しかし、関数名を繰り返すことなくこれを行うことはできますか?

ベストアンサー1

set -a    # or: set -o allexport

# will be exported:
foo () {
   echo foo
}

set +a    # or: set +o allexport

# will not be exported:
bar () {
    echo bar
}

allexportシェルオプションを設定すると、bashオプションの設定時に定義したすべての機能がエクスポートされます。このオプションが必要なファイル部分に対してこのオプションを設定してから、設定を解除できます。

これは定義された変数にも影響しますが(自動的に環境変数に変換されます)、関数定義内の変数には影響しません。

おすすめ記事