サブシェルに機能を伝播する方法は?

サブシェルに機能を伝播する方法は?

ソラリス/sh

以下を介してロードされるファイルにいくつかの機能が定義されています。

. ./some_file.sh 

サブシェルを起動するとき

sh

私の関数定義はすべて失われましたが、そうすれば

env

ソースコードを見ました。私のサブシェルで動作させる簡単な方法はありますか?

ベストアンサー1

関数は自然に次に伝播されます。サブシェル:

greet () {
  echo "hello, $1"
}
( echo "this is a subshell"; greet bob )

ただし、名前でシェルを呼び出すことによって開始される独立したシェルプロセスには伝播されず、伝播することもできません。

Bashには、環境を介して機能を渡す拡張機能があります。しかし、他のシェルにはそのようなものはありません。この機能をシミュレートできますが、とにかくネストされたシェルでコードを実行する必要があります。ネストされたシェルから関数定義を取得することもできます。

おすすめ記事