gpt4 book ai didi

bash - 为什么要避免子外壳?

转载 作者:行者123 更新时间:2023-11-29 08:48:32 30 4
gpt4 key购买 nike

我在 Stack Overflow 上看到了很多答案和评论那提到做一些事情来避免子外壳。在一些情况下,给出了一个功能原因(通常,可能需要读取一个变量在其中分配的子外壳之外),但在其他情况下,回避似乎被视为结束在自身。例如

这是为什么?是为了风格/优雅/美丽?为了性能(避免 fork )?为了防止可能错误?还有别的吗?

最佳答案

有一些事情正在发生。

首先, fork 一个子 shell 仅发生一次时可能不会引起注意,但如果您在循环中执行它,它会增加可衡量的性能影响。在 Windows 等平台上,性能影响也更大,在这些平台上, fork 并不像在现代 Unixlikes 上那么便宜。

其次, fork 一个子 shell 意味着您有多个上下文,并且在它们之间切换时会丢失信息——如果您更改代码以在子 shell 中设置一个变量,则该变量会在子 shell 退出时丢失。因此,您的代码中包含的子 shell 越多,您在以后修改它时就越要小心,以确保您所做的任何状态更改实际上都会持续存在。

参见 BashFAQ #24有关由子外壳引起的令人惊讶的行为的一些示例。

关于bash - 为什么要避免子外壳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21976606/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com