linux shell 入门学习笔记13 父子shell

父子shell

从上面的父子shell的图表中可以看到:
1.使用source和点,执行脚本,旨在当前的shell环境中执行生效
2.指定/bin/bash解释器运行脚本,是开启了一个subshell,开启子shell运行脚本命令。
3…/script,都会指定shebang,通过解释器运行,也是开启subshell运行命令。

父shell概念

pstree 看到如下结果,就是父shell

pstree

├─sshd───sshd───sshd───bash───pstree

也可以使用ps进程管理命令查看

ps -ef
-f 显示UID PID PPID
-e 列出所有进程的信息,如同-A选项option

ps -ef --forest
root        3105       1  0 2月22 ?       00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root        4616    3105  0 2月22 ?       00:00:00  \_ sshd: xiao123 [priv]
xiao123     4652    4616  0 2月22 ?       00:00:00      \_ sshd: xiao123@pts/0
xiao123     4653    4652  0 2月22 pts/0   00:00:00          \_ -bash
xiao123   101694    4653  0 17:35 pts/0    00:00:00              \_ ps -ef --forest

子shell概念

bash   #开启一个子shell
ps -ef --forest    #查看当前子shell
root        3105       1  0 2月22 ?       00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root        4616    3105  0 2月22 ?       00:00:00  \_ sshd: xiao123 [priv]
xiao123     4652    4616  0 2月22 ?       00:00:00      \_ sshd: xiao123@pts/0
xiao123     4653    4652  0 2月22 pts/0   00:00:00          \_ -bash   #父shell
xiao123   101698    4653  0 17:41 pts/0    00:00:00              \_ bash  #子shell
xiao123   101705  101698  0 17:41 pts/0    00:00:00                  \_ ps -ef --forest

图示如下:
图示

多个子shell概念

多个zishell

ps -ef --forest
root        3105       1  0 2月22 ?       00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root        4616    3105  0 2月22 ?       00:00:00  \_ sshd: xiao123 [priv]
xiao123     4652    4616  0 2月22 ?       00:00:00      \_ sshd: xiao123@pts/0
xiao123     4653    4652  0 2月22 pts/0   00:00:00          \_ -bash                    #父shell
xiao123   101698    4653  0 17:41 pts/0    00:00:00              \_ bash               #子shell
xiao123   101706  101698  0 17:47 pts/0    00:00:00                  \_ sh             #孙shell
xiao123   101708  101706  0 17:48 pts/0    00:00:00                      \_ bash  #曾孙shell
xiao123   101715  101708  0 17:48 pts/0    00:00:00                          \_ ps -ef --forest

只要输入exit,就可以推出子shell了。

创建进程列表(创建子shell执行命令)

我们可以将一系列命令打包在一起执行,这种方式称为进程列表。进程列表一般使用()来进行打包命令。

(cd ~;pwd;ls;cd /tmp;ls)

检查是否在子shell环境中

linux 默认有关SHELL的变量
BASH_SUBSHELL  # 此变量如果是0,表示在当前shell中执行,否则是开启子shell执行

检测是否开启了子shell命令

xiao123@xiao123:~/Downloads/shscripts$ (cd ~;pwd;ls;cd /tmp;ls; echo $BASH_SUBSHELL;)
/home/xiao123
Desktop  Documents  Downloads  Music  Pictures  Public  snap  Templates  Videos
snap-private-tmp
systemd-private-51e7222707984dbab3f56eff4ef54a5b-colord.service-v785SA
systemd-private-51e7222707984dbab3f56eff4ef54a5b-ModemManager.service-mXYq1V
systemd-private-51e7222707984dbab3f56eff4ef54a5b-power-profiles-daemon.service-0JeaMY
systemd-private-51e7222707984dbab3f56eff4ef54a5b-switcheroo-control.service-oLl0Ls
systemd-private-51e7222707984dbab3f56eff4ef54a5b-systemd-logind.service-IXrXZv
systemd-private-51e7222707984dbab3f56eff4ef54a5b-systemd-oomd.service-QcR0as
systemd-private-51e7222707984dbab3f56eff4ef54a5b-systemd-resolved.service-UCO5Ms
systemd-private-51e7222707984dbab3f56eff4ef54a5b-systemd-timesyncd.service-D6KjOt
systemd-private-51e7222707984dbab3f56eff4ef54a5b-upower.service-0TC21K
tracker-extract-3-files.127
tracker-extract-3-files.999
VMwareDnD
1
xiao123@xiao123:~/Downloads/shscripts$

子shell嵌套运行

子shell可以嵌套多个,如下示例:

xiao123@xiao123:~/Downloads/shscripts$ (pwd; echo $BASH_SUBSHELL;)
/home/xiao123/Downloads/shscripts
1
xiao123@xiao123:~/Downloads/shscripts$ (pwd; (echo $BASH_SUBSHELL;))
/home/xiao123/Downloads/shscripts
2
xiao123@xiao123:~/Downloads/shscripts$ (pwd; (ls;(echo $BASH_SUBSHELL;)))
/home/xiao123/Downloads/shscripts
chaochao_1_finished.png  chaochao_2.jpg           chaochao_4_finished.png  chaochao_5.jpg
chaochao_1.jpg           chaochao_3_finished.png  chaochao_4.jpg           del_data.sh
chaochao_2_finished.png  chaochao_3.jpg           chaochao_5_finished.png
3
xiao123@xiao123:~/Downloads/shscripts$
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值