子shell的理解

创建子shell
在当前shell 使用bash 命令即可创建子shell程序, 在子shell上还可以继续创建子shell ,… 。

例子
使用命令 ps -f 查看进程信息(程序运行后就是进程,它可以反应程序运行的状态信息)

user1@localhost:~> ps -f

输出结果:
第一行含义:UID表示启动该进程的用户名(用户ID);PID是进程ID;PPID是父进程ID;CMD是启动该进程的程序名
第二行进程PID是3044 运行的是bash shell程序,
第三行进程PID是3142 对应上面执行的命令 ps -f

UID         PID   PPID  C STIME TTY          TIME CMD
user1      3044   3041  0 15:59 pts/1    00:00:00 /bin/bash  
user1      3142   3044  0 16:05 pts/1    00:00:00 ps -f

创建子shell

user1@localhost:~> bash   

再次 ps -f 查看,显示信息多出了一个进程(PID为3149在第二行第二列), 它的PPID(父进程ID)是3044, 说名它是进程ID3044的子shell程序

user1@localhost:~> ps -f 
UID         PID   PPID  C STIME TTY          TIME CMD
user1      3044   3041  0 15:59 pts/1    00:00:00 /bin/bash
user1      3149   3044  0 16:06 pts/1    00:00:00 bash  
user1      3173   3149  0 16:06 pts/1    00:00:00 ps -f

可以在子shell程序上继续创建子shell

user1@localhost:~> bash  
user1@localhost:~> bash 

通过 PID 和 PPID 可以清楚看到这些bash shell的父、子、孙关系

user1@localhost:~> ps -f
UID         PID   PPID  C STIME TTY          TIME CMD
user1      3044   3041  0 15:59 pts/1    00:00:00 /bin/bash
user1      3149   3044  0 16:06 pts/1    00:00:00 bash
user1      3252   3149  0 16:23 pts/1    00:00:00 bash
user1      3275   3252  0 16:23 pts/1    00:00:00 bash
user1      3297   3275  0 16:23 pts/1    00:0

ps --forest 命令以树状形式显示父子级关系

user1@localhost:~/test> ps --forest
  PID   TTY         TIME  CMD
  3746 pts/1    00:00:00 bash
  4453 pts/1    00:00:00  \_ bash
  4477 pts/1    00:00:00      \_ bash
  5163 pts/1    00:00:00          \_ bash
  5196 pts/1    00:00:00              \_ ps

按 Ctrl+D 或输入exit 命令依次退出子shell程序。

他们的关系图
他们的关系图

继承关系
在父shell 创建局部变量,在子shell 无法echo 出来,父shell创建的全局变量,子shell 则可以,子shell 对这个全局变量值进行更改并不影响到父shell的全局变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值