使用exec
命令运行程序有什么区别?
例如,如果我制作了如下的脚本文件.
#script1 python test.py #script2 exec python test.py
两者似乎都返回相同的结果.
它们是等价的吗?
exec
是一个内置的shell,它用新进程替换当前进程的映像.它与调用二进制/可执行文件不同.
要看到差异,请执行以下操作:
#script1 python test.py echo Hello #script2 exec python test.py echo Hello
您将看不到Hello
在第二个脚本中打印.
exec
贝壳的另一个目的.它可以用于重定向.例如,
exec 1>file
将stdout
进程重定向到file
.
如果你有:
exec 1>file echo hello echo world
然后脚本将重定向hello
和world
以file
代替stdout
.