如何在不运行source命令的情况下将子shell的执行行打印到主shell?

问题描述 投票:-1回答:1

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

那么,为什么我在主shell /终端中看到echo命令的输出?我认为你必须做一个“source ./foo.sh”而不是简单的“./foo.sh”来查看当前shell中的输出。

你们有谁可以帮忙澄清一下吗?

linux bash shell centos
1个回答
3
投票

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

命令执行环境

当要执行除builtin或shell函数之外的简单命令时,将在由以下内容组成的单独执行环境中调用它。除非另有说明,否则值将从shell继承。

  • shell的打开文件,以及由重定向到命令指定的任何修改和添加
  • ...
© www.soinside.com 2019 - 2024. All rights reserved.