使用exec
命令运行程序有什么区别?
例如,如果我制作了如下的脚本文件。
#script1
python test.py
#script2
exec python test.py
两者似乎都返回相同的结果。
他们是等同的吗?
答案 0 :(得分:5)
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
。