直接运行程序和在脚本中调用exec有什么不同?

时间:2015-12-15 08:29:05

标签: linux exec

使用exec命令运行程序有什么区别?

例如,如果我制作了如下的脚本文件。

#script1
python test.py

#script2
exec python test.py

两者似乎都返回相同的结果。

他们是等同的吗?

1 个答案:

答案 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

然后脚本会将helloworld重定向到file,而不是stdout