到处都有建议,以避免不必要的子外壳。这使我想知道通常启用lastpipe
选项是否有效,以使管道中的最后一条命令不在子shell中执行?
答案 0 :(得分:3)
更有效?当然。
最佳实践?这取决于您的优先顺序。
如果您关心交互式外壳程序和非交互式外壳程序之间的一致行为,则bash上的shopt -s lastpipe
会有很大的折衷,因为在启用作业控制时它不起作用。因此,如果将代码传输到由于实现限制而未设置lastpipe标志或无效的上下文中,则(有意或隐含地)依赖于在同一进程中运行的管道的最后一部分的脚本可能会静默失败。 / p>