Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >LinuxShell父子关系概述

LinuxShell父子关系概述

作者头像
hotarugali
发布于 2022-02-28 12:09:47
发布于 2022-02-28 12:09:47
59000
代码可运行
举报
运行总次数:0
代码可运行

1. 父 Shell

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

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
shell十三问,为linux学习打基础(二)
本文整理并转自CU上的帖子[学习共享] shell 十三問?,此贴是2003年发表的,但却是相当不错的linux基础知识汇集贴,原帖主使用的中国台湾风格,本文加以简体化和整理。 第6问:exec跟so
小小科
2018/05/03
9080
Bash脚本编程之subshell
(command1;command2;command3;...)会启动子shell。子shell可以访问父shell的变量,对父shell变量的改动只在子shell中有效;子shell中定义的变量是局部变量,外部不能访问:
枇杷李子橙橘柚
2019/05/26
8830
《Linux命令行与shell脚本编程大全》 第五章理解shell
5.1 1. cat /etc/passwd 可以查看每个用户自己的默认的shell程序。 2.默认的交互shell会在用户登录某个虚拟控制台终端时启动。 不过还有另外一个默认的shell是/bin/sh,它作为默认的shell,用于那些需要在启动时使用的shell脚本 ls -l /bin/sh   进行查看 乌班图的发行版中默认的系统shell(dash shell)和默认的交互shell(bash shell)并不相同。 可以直接 dash 来启动 dash shell exit 退出 5.2 she
xcywt
2018/01/11
1.1K0
BashShell变量
Bash Shell 使用「环境变量」来存储有关 Shell 会话和工作环境的信息。环境变量分为两类:
hotarugali
2022/02/28
2.5K0
第三十七章 : 奇珍异宝
In this, the final chapter of our journey, we will look at some odds and ends.While we have certainly covered a lot of ground in the previous chapters,there are many bash features that we have not covered. Most are fairly obscure,and useful mainly to those integrating bash into a Linux distribution. However,there are a few that, while not in common use, are helpful for certainprogramming problems. We will cover them here.
砖业洋__
2023/05/06
6260
​Shell之可爱的变量
知止而后能定,定而后能静,静而后能定,安而后能虑,虑而后能得。 —- 语出<<大学>>
后场技术
2020/09/03
1.1K0
​Shell之可爱的变量
Shell:子shell概念
每个shell进程有一个自己的运行环境,不同的Shell进程有不同的Shell环境。Shell解析命令行、调用命令行的过程都在这个环境中完成。
huofo
2022/03/17
1.4K0
Shell:子shell概念
你应该知道的Shell 脚本的经典十三问
原文:https://www.cnblogs.com/rustling/p/9833174.html
入门笔记
2022/06/02
8230
你应该知道的Shell 脚本的经典十三问
Shell编程详解
Linux操作系统是一种开放源代码的类UNIX操作系统,它的结构分为内核、Shell和应用程序三个层次。
冬天vs不冷
2025/01/20
2550
Shell编程详解
SHELL(bash)脚本编程二:语法
token 是指被shell看成一个单一单元的字符序列 bash中包含三种基本的token:保留关键字,操作符,单词。 保留关键字是指在shell中有明确含义的词语,通常用来表达程序控制结构。包括:
用户5030870
2019/04/11
1.4K0
Linux学习笔记(四)
接下来一段时间打算学一下linux 学习来源书本《Linux命令行与shell脚本编程大全 第三版》
epoos
2022/06/06
1.1K0
为什么要用fish shell
什么是fish,Fish又称为Friendly shell for interactive use。Fish设计之初能兼容其他shell的命令, 并且会比其他shell更友好而且又高效。在一些特性上,fish做了改进,这和其他shell比如bashl是有区别的。体现在一些标识符,一些命令扩展和易用上。
mariolu
2020/02/20
2.4K0
shell编程知识点集锦
shell脚本是按行分隔每一条shell语句。如果每一条shell语句写在单独一行,此时可以加分号,也可以不加,没有什么区别。如果多条shell写在同一行,那么此时需一定要用分号将不用语句分隔开来。
恋喵大鲤鱼
2018/08/03
1.7K0
Shell 基础语法
本文只是对 shell 脚本语言中一些常用的基础语法进行汇总整理,如果你真的想系统的学习 shell 脚本编程,这里推荐两本电子读物:
Ryoma
2022/04/02
1.1K0
Shell 基础语法
Linux笔记(8)| Shell脚本编程
command1 && command2 当command1为假时才执行command2
飞哥
2020/07/10
9743
linux命令行与shell脚本编程大全和鸟哥的私房菜_linux进入命令行
链接文件:符号链接:是一个实实在在的文件,两个通过符号链接在一起的文件,彼此的内容并不相同。使用ln -s命令。
全栈程序员站长
2022/09/27
2.5K0
shell脚本学习之必须了解的基础命令
命令历史 history !! 表示执行上一条命令 !n  表示执行历史中第n条命令 !字符串  表示执行命令历史中首次出现该字符串的命令 设置别名:alias 取消别名:unalias 通配符 在bash下   * :匹配0个或多个字符 ?:只匹配一个字符 输入重定向:< 输出重定向:> 追加重定向:>> 错误重定向: 2> 错误追加重定向:2>> 管道符:| 作业控制 job:查看任务 Ctrl+z:暂停任务 fg:恢复暂停的任务 bg:把暂停的任务丢到后台运行
汤高
2018/01/11
9340
02 . Shell变量和逻辑判断及循环使用
while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:
iginkgo18
2020/09/27
1.5K0
LinuxShell分类
交互式 Shell 是指在终端命令行上执行,以提示符的方式在终端等待用户输入,并实时运行用户输入的命令的模式;即与用户交互的模式。
hotarugali
2022/02/28
4270
简单&基础shell操作_转发分享
先说明以下内容来自:https://www.cnblogs.com/yinheyi/p/6648242.html 请大家支持原作,点击链接查看。 我写下来只是作为笔记,如果侵权,请留言,立马删除。 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有: bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。 sh: 由Steve Bourne开发,是Bour
知识浅谈
2020/04/13
1.1K0
相关推荐
shell十三问,为linux学习打基础(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验