
私はこれができることを知っています:
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
オプションの設定時に定義したすべての機能がエクスポートされます。このオプションが必要なファイル部分に対してこのオプションを設定してから、設定を解除できます。
これは定義された変数にも影響しますが(自動的に環境変数に変換されます)、関数定義内の変数には影響しません。