【问题标题】:How does a subshell's executed lines get printed to the main shell without running the source command?如何在不运行 source 命令的情况下将子 shell 的执行行打印到主 shell?
【发布时间】:2019-04-09 23:26:14
【问题描述】:

假设我有一个名为 foo.sh 的可执行 shell 脚本。里面是一个简单的回声“Hello World”。据我了解,当我通过 ./foo.sh 运行它时,会调用一个执行 echo "Hello World" 行的子 shell。

那么,为什么我会在我的主 shell/终端中看到 echo 命令的输出?我认为您必须执行“source ./foo.sh”而不是简单的“./foo.sh”才能在当前 shell 中查看输出。

谁能帮忙澄清一下?

【问题讨论】:

    标签: linux bash shell centos


    【解决方案1】:

    标准输出是继承的。引用Bash Reference Manual:

    命令执行环境

    当一个除了内置或 shell 函数之外的简单命令是 执行时,它在单独的执行环境中调用 由以下组成。除非另有说明,否则这些值为 从外壳继承

    • shell 的打开文件,以及通过重定向到命令指定的任何修改和添加
    • ...

    【讨论】:

      猜你喜欢
      • 2018-11-28
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多