コマンドを実行するさまざまな注文の前に、同じ環境変数文字列を繰り返したいとします。
if [[ some_thing ]]; then
TZ=GMT LC_ALL=C LONG_ENV_VAR=foo my_command
elif [[ some_other_thing ]]; then
TZ=GMT LC_ALL=C LONG_ENV_VAR=foo my_command --with-arg
else
TZ=GMT LC_ALL=C LONG_ENV_VAR=foo my_command --with-other-arg
fi
それらを組み合わせる方法はありますか?いくつかのオプション
それらを設定することで
export
export TZ=GMT export LC_ALL=C export LONG_ENV_VAR=foo if [[ ]] # ...
これは機能しますが、環境に設定された状態を維持したくありません。
変数変数を作ろう!
local cmd_args="TZ=GMT LC_ALL=C LONG_ENV_VAR=foo"
残念ながら、次のように実行しようとすると:
$cmd_args my_command
私は持っています
TZ=GMT: command not found
。毎回すべてリストします。
私もグーグルをしてみましたが、「環境変数変数」は検索が最も簡単な用語ではなく、結果も出ませんでした。 #2で私がやろうとしていることに対する解決策はありますか?それとも#1のいくつかのバージョンに固執し、変数を設定解除する必要がありますか?
ベストアンサー1
これにはサブシェルを使用できます。
(
export TZ=GMT LC_ALL=C LONG_ENV_VAR=foo
if [[ some_thing ]]; then
exec my_command
…
fi
)
これにより、変数を一度明確に設定できます。サブシェルで実行されているすべての項目に表示され、デフォルトのシェル環境には表示されません。