環境または環境なし

環境または環境なし

コマンドの違いは何ですか

$ env FOO=bar baz

そして

$ FOO=bar baz

それは何をしますかenv

ベストアンサー1

機能的に同じです。

主な違いは、env FOO=bar bazシェルを呼び出し、シェルbazFOO=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 bazexec env FOO=bar baz

おすすめ記事