Bash関数をインラインでエクスポートする

Bash関数をインラインでエクスポートする

私はこれを持っています:

foo(){
   install_ores_gitflow;
   command foo "$@"
}

export -f foo;

私は次のようなものを探しています:

export foo(){
   install_ores_gitflow;
   command foo "$@"
}

しかし、構文が正しくありません。

私が見つけた一つの技術は次のとおりです。 ファイルのすべてのBash機能を1行にエクスポートするには?

これは私がこれを行うことができることを意味します:

set -a;

foo(){
  install_ores_gitflow;
  command foo "$@"
}

set +a;

しかし、ソーシングスクリプトにset -a非常に間違ったスクリプトがある可能性があるため、このソリューションは気に入らません。これは私のスクリプトがそれを上書きすることを意味します。

ベストアンサー1

厄介なハッキングですが、少なくともexport命令を出すことはできます。以上関数定義をより簡単に見ることができます。

# a function to create a dummy function and export it
export_function() { eval "function $1 { :; }; export -f $1"; }

# then

export_function foo
foo() { echo "here is the *real* function"; }

おすすめ記事