Apa perbedaan antara perintah
$ env FOO=bar baz
dan
$ FOO=bar baz
Apa efek env
punya?
Jawaban yang Diterima:
Mereka secara fungsional setara.
Perbedaan utamanya adalah env FOO=bar baz
melibatkan pemanggilan proses perantara antara shell dan baz
, sedangkan dengan FOO=bar baz
shell langsung memanggil baz
.
Jadi dalam hal itu, FOO=bar baz
lebih disukai.
Satu-satunya situasi yang saya temukan menggunakan env FOO=bar
di situlah saya harus meneruskan perintah ke perintah lain.
Sebagai contoh spesifik, katakanlah saya memiliki skrip pembungkus yang melakukan beberapa modifikasi lingkungan, dan kemudian memanggil exec
pada perintah yang diteruskan, seperti:
#!/bin/bash
FOO=bob
some stuff
exec "[email protected]"
Jika Anda menjalankannya sebagai myscript FOO=bar baz
, exec
akan menimbulkan kesalahan sebagai exec FOO=bar baz
tidak valid.
Sebagai gantinya Anda menyebutnya sebagai myscript env FOO=bar baz
yang dieksekusi sebagai exec env FOO=bar baz
, dan sangat valid.