前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LinuxShell父子关系概述

LinuxShell父子关系概述

作者头像
hotarugali
发布2022-02-28 20:09:47
5060
发布2022-02-28 20:09:47
举报

1. 父 Shell

父 Shell 是用于登录某个远程主机或虚拟控制器终端或在 GUI 中运行终端仿真器时所启动的默认的交互式 Shell 。

Linux Shell 中在当前 Shell 执行脚本文件的方式有:

代码语言:javascript
复制
 source script             # 在当前 Shell 执行 script 文件
. script                  # 在当前 Shell 执行 script 文件

2. 子 Shell(subshell)

子 Shell 是父 Shell 进程调用了 fork() 函数,在内存中复制出一个与父 Shell 进程几乎完全一样的子进程。

  • 子 Shell 继承了父 Shell 的所有环境变量(包括全局和局部变量)
  • 可以通过环境变量 BASH_SUBSHELL(其值表明子 Shell 的嵌套深度)判断是第几层子 Shell(0 说明当前 Shell 不是子 Shell)

Linux Shell 中创建子 Shell 的方式有:

代码语言:javascript
复制
`command[;command...]`        # command 在子 Shell 中执行
( command[;command...] )      # command 在子 Shell 中执行(可嵌套)
command1 | command2           # command1 和 command2 都在子 Shell 中运行

3. 孩子 Shell(child shell)

孩子 Shell 是父 Shell 进程调用了 fork() 函数后又调用了 execve() 函数来执行新的 shell 命令(比如 bash),从而覆盖 fork() 复制出来的 Shell 子进程。

  • 孩子 Shell 只继承到父 Shell 的全局环境变量(而不能访问到父 Shell 的局部环境变量)
  • 可以通过环境变量 SHLVL(其值表明孩子 Shell 的嵌套深度)判断是第几层孩子 Shell(启动的第一个 Shell 其 SHLVL 为 1)

Linux Shell 中创建孩子 Shell 的方式有:

代码语言:javascript
复制
bash script       # 以 Bash Shell 为例,script 在孩子 Shell 中执行
./script          # 前提是 script 文件具有可执行权限,script 在孩子 Shell 中执行
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 父 Shell
  • 2. 子 Shell(subshell)
  • 3. 孩子 Shell(child shell)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档