サブシェルの環境変数の設定

サブシェルの環境変数の設定

次の環境変数を使用してコマンドを実行できることがわかります。

FOO=bar mycommand

次のようにサブシェルでコマンドを実行できることがわかります。

(firstcommand && secondcommand)

しかし、どういうわけかこの2つを組み合わせることができますか?

FOO=bar (firstcommand && secondcommand)

以下を提供します。

sh: syntax error: unexpected "("

少なくともBusiness Boxシェル(ash)では。

編集する:KusaranandaはFOO=bar sh -c 'first && second'これが実際に解決策であると提案します。しかし、私は引用符のエスケープを操作する必要がないので、サブシェル構文が好きなので、代替答えにも興味があります。

ベストアンサー1

一方通行:

FOO=bar sh -c 'first && second'

これはFOO個々のコマンドのsh環境変数を設定します。

複数の環境変数を設定します。

FOO=bar BAZ=quux sh -c 'first && second'

export別の方法は、サブシェルの内部に変数を生成することです。サブシェル内でアクションを実行すると、exportシェルがその環境で変数を取得できなくなります。

( export FOO=bar; first && second )

export要約(現在削除済み)注:環境変数(シェル変数ではない)を作成する必要があります。環境変数の問題は、子プロセスによって継承されることです。firstおよびsecondその環境を表示する外部ユーティリティ(またはスクリプト)の場合は、存在しないFOO場合export

おすすめ記事