このファイルtmp.sh
には以下が含まれます。
func() {
ls
}
source tmp.sh
この機能はfunc
。
ただし、購入がcat tmp.sh | source /dev/stdin
bashの苦情で行われた場合:
-bash: func3: コマンドが見つかりません。
これら2つの購入方法の違いは何ですか?source
視点では/dev/stdin
ファイルハンドルでもあるため、違いがあってはなりません。
答え1
Bash(1)から:パイプラインの各コマンドは、別々のプロセス(つまりサブシェルで)で実行されます。
デフォルトシェルはそのサブシェルの定義にアクセスできません。