コマンドの違いは何ですか
$ 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
として実行されます 、および完全に有効です。