为了账号安全,请及时绑定邮箱和手机立即绑定

exec命令在shell脚本中有什么用处?

exec命令在shell脚本中有什么用处?

ABOUTYOU 2019-08-15 14:02:26
exec命令在shell脚本中有什么用处?谁能用简单的例子解释shell脚本中exec命令的用途是什么?
查看完整描述

2 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

只是为了通过一个简短的新手友好的简短答案来增加接受的答案,你可能不需要exec

如果你还在这里,下面的讨论应该有希望揭示原因。当你跑步时,比方说,

sh -c 'command'

你运行一个sh实例,然后command作为该sh实例的孩子开始。当command完成后,该sh实例也结束。

sh -c 'exec command'

运行一个sh实例,然后二进制替换sh实例command,然后运行它。

当然,在这种有限的背景下,这两者都是无用的; 你只是想要

command

在某些边缘情况下,您希望shell读取其配置文件,或以某种方式将环境设置为运行准备command。这几乎是唯一exec command有用的情况。

#!/bin/shENVIRONMENT=$(some complex task)exec command

这做了一些准备环境的东西,以便它包含所需的东西。一旦完成,sh实例就不再需要了,因此只需用进程替换sh实例就可以进行(次要)优化command,而不是将sh其作为子进程运行并等待它,然后在完成后立即退出。

同样,如果要在shell脚本结束时为尽可能多的命令释放尽可能多的资源,您可能希望exec将该命令作为优化。

如果有什么东西强迫你运行,sh但你真的想要运行别的东西,exec something else当然是一种替换不需要的sh实例的解决方法(例如,如果你真的想运行自己的漂亮gosh而不是sh你的,/etc/shells那么你就可以了不要将它指定为您的登录shell。

exec操纵文件描述符的第二个用法是一个单独的主题。接受的答案很好地涵盖了这一点; 为了保持这种自包含,我只是按照手册中的任何地方exec,然后是重定向而不是命令名称。


查看完整回答
反对 回复 2019-08-15
  • 2 回答
  • 0 关注
  • 1498 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信