web-dev-qa-db-ja.com

execでコマンドを実行して変数を設定する

次のように、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

何故ですか?
これを行う方法はありますか?

18
Ken

環境変数を指定するには、envを使用する必要があります。

exec env MY_VARIABLE=my_value ./my_script.sh

スクリプトを空の環境または指定した変数のみで開始する場合は、-iオプションを使用します。

man envから:

   env - run a program in a modified environment
51
devnull

Bashでは、コマンドの先頭に割り当てを置くことで、コマンドの環境変数を設定できます。これはexecでも他のコマンドと同じように機能するため、次のように記述します。

MYVARIABLE=my_value exec ./my_script.sh
7
rici