【问题标题】: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 的打开文件,以及通过重定向到命令指定的任何修改和添加
- ...