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

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

谁能用简单的例子解释shell脚本中exec命令的用途是什么?



ABOUTYOU
浏览 1502回答 2
2回答

斯蒂芬大帝

只是为了通过一个简短的新手友好的简短答案来增加接受的答案,你可能不需要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,然后是重定向而不是命令名称。
打开App,查看更多内容
随时随地看视频慕课网APP