次のように、1つのコマンドに変数を設定できます。
MY_VARIABLE=my_value ./my_script.sh
次のような別のスクリプトに渡すことができます。
exec ./my_script.sh
しかし、私がこのように両方をしようとすると:
exec MY_VARIABLE=my_value ./my_script.sh
エラーが発生します:
exec: MY_VARIABLE=my_value: not found
何故ですか?
これを行う方法はありますか?
環境変数を指定するには、env
を使用する必要があります。
exec env MY_VARIABLE=my_value ./my_script.sh
スクリプトを空の環境または指定した変数のみで開始する場合は、-i
オプションを使用します。
man env
から:
env - run a program in a modified environment
Bashでは、コマンドの先頭に割り当てを置くことで、コマンドの環境変数を設定できます。これはexec
でも他のコマンドと同じように機能するため、次のように記述します。
MYVARIABLE=my_value exec ./my_script.sh