コマンドの違いは何ですか
$ env FOO=bar baz
および
$ FOO=bar baz
envはどのような効果がありますか 持っていますか?
承認された回答:
それらは機能的に同等です。
主な違いは、env FOO=bar baz シェルとbazの間の中間プロセスを呼び出す必要があります 、FOO=bar bazと同様です。 シェルはbazを直接呼び出します 。
その点で、FOO=bar baz 優先されます。
env FOO=barを使用している唯一の状況 ここで、コマンドを別のコマンドに渡す必要があります。
具体的な例として、環境の変更を実行するラッパースクリプトがあり、execを呼び出すとします。 渡されたコマンド(例:
#!/bin/bash
FOO=bob
some stuff
exec "[email protected]"
myscript FOO=bar bazとして実行した場合 、exec exec FOO=bar bazとしてエラーをスローします 無効です。
代わりに、myscript env FOO=bar bazと呼びます。 これはexec env FOO=bar bazとして実行されます 、および完全に有効です。