命令之间有什么区别
$ env FOO=bar baz
和
$ FOO=bar baz
有什么作用env
?
它们在功能上是等效的。
主要区别在于env FOO=bar baz
涉及在shell和之间调用中间过程baz
,就像FOO=bar baz
直接调用shell一样baz
。
所以在这方面,FOO=bar baz
是首选。
我发现自己env FOO=bar
在其中使用的唯一情况是必须将一个命令传递给另一个命令。
作为一个特定的示例,可以说我有一个包装脚本,该脚本对环境进行了一些修改,然后调用exec
传递给它的命令,例如:
#!/bin/bash
FOO=bob
some stuff
exec "$@"
如果您将其执行为myscript FOO=bar baz
,exec
将抛出错误,因为exec FOO=bar baz
无效。
取而代之的是,您将其称为myscript env FOO=bar baz
,它将作为执行exec env FOO=bar baz
,并且完全有效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句