次の環境変数を使用してコマンドを実行できることがわかります。
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
。