コマンドの違いは何ですか
$ env FOO=bar baz
そして
$ FOO=bar baz
それは何をしますかenv
?
ベストアンサー1
機能的に同じです。
主な違いは、env FOO=bar baz
シェルを呼び出し、シェルbaz
とFOO=bar baz
シェルの間の中間プロセスを直接呼び出すことですbaz
。
したがって、そのような点でFOO=bar baz
好ましい。
私が使用する唯一の状況は、env FOO=bar
あるコマンドを別のコマンドに渡す必要があるときです。
具体的な例として、環境にいくつかの変更を加えてからexec
渡されたコマンドを呼び出すラッパースクリプトがあるとします。たとえば、次のようになります。
#!/bin/bash
FOO=bob
some stuff
exec "$@"
実行するとmyscript FOO=bar baz
無効であるexec
ため、エラーが発生しますexec FOO=bar baz
。代わりに、it does it
と呼ぶと完全に有効です。myscript env FOO=bar baz
exec env FOO=bar baz