bashでVARIABLE =(){関数定義}がどのように機能するか

bashでVARIABLE =(){関数定義}がどのように機能するか

警告 - この質問は以前のBashに関するものです。脆弱性があり変更されました。


私のbash ENVで同様のものを見ました。

module=() {  eval `/usr/bin/modulecmd bash $*` }

この構造はどのように機能しますか?これを何と呼びますか?

私はmodulecmdについて尋ねるのではなく、全体の構成について尋ねます。

答え1

実際にはという関数ですmodule。以下を実行すると、環境変数に表示されます。出口機能。

$ test() { echo test; }
$ export -f test
$ env | sed -n '/test/{N;p}'
test=() {  echo test
}

~からbash ドキュメント - エクスポート:

出口

 export [-fn] [-p] [name[=value]]

環境の子プロセスに渡される各名前を表示します。-f オプションが指定された場合、名前はシェル関数を表します。;そうでない場合、名前はシェル変数を参照します。 -nオプションは、各名前がエクスポート用に表示されなくなることを意味します。名前が指定されていない場合、または-pオプションが指定されている場合は、エクスポート名のリストが表示されます。 -pオプションは、入力として再利用できる形式で出力を表示します。変数名の後に=値が続くと、変数の値が値に設定されます。

無効なオプションが指定されている場合、または名前のいずれかが有効なシェル変数名でない場合、または-fで指定された名前がシェル関数でない場合を除き、戻り状態は0です。

関連情報