假设我有一个名为foo.sh的可执行shell脚本。里面是一个简单的回声“Hello World”。根据我的理解,当我通过./foo.sh运行时,会调用一个子shell来执行echo“Hello World”行。
那么,为什么我在主shell /终端中看到echo命令的输出?我认为你必须做一个“source ./foo.sh”而不是简单的“./foo.sh”来查看当前shell中的输出。
你们有谁可以帮忙澄清一下吗?
标准输出是继承的。引自Bash Reference Manual:
命令执行环境
当要执行除builtin或shell函数之外的简单命令时,将在由以下内容组成的单独执行环境中调用它。除非另有说明,否则值将从shell继承。
- shell的打开文件,以及由重定向到命令指定的任何修改和添加
- ...