8.8-shell变量(下) export设置全局变量 、unset 取消全局变量、pstree查看系统进程

export 设置全局变量
export 命令就是声明下这个变量,这个变量只在这个 shell 的子 shell 中生效,反之在子 shell 中定义的变量,在父 shell 中不生效

在evan-01(1)下查看
查看当前在哪个终端下

[root@evan-01 ~]# w
 15:16:54 up 11 min,  1 user,  load average: 0.00, 0.04, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.94.1     15:10    6.00s  0.08s  0.01s w
[root@evan-01 ~]# 

查看在哪个 TTY 下

[root@evan-01 ~]# echo $SSH_TTY
/dev/pts/0
[root@evan-01 ~]#

定义变量并 echo

[root@evan-01 ~]# evan=linux
[root@evan-01 ~]# echo $evan
linux
[root@evan-01 ~]#

复制一个终端,在evan-01(2)下查看

[root@evan-01 ~]# echo $SSH_TTY
/dev/pts/1
[root@evan-01 ~]#

echo 在evan-01中定义的变量 evan

[root@evan-01 ~]# echo $evan

[root@evan-01 ~]# 

pstree 查看系统进程(在evan-01 (1)下操作)
如果在当前 shell 中运行 bash 指令,则会进入一个新的 shell ,这个 shell 就是原来 shell 的子 shell 。可以用 pstree 命令查看下

[root@evan-01 ~]# bash 
[root@evan-01 ~]# w
 15:22:41 up 17 min,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.94.1     15:10    1.00s  0.07s  0.00s w
root     pts/1    192.168.94.1     15:19   33.00s  0.00s  0.00s -bash
[root@evan-01 ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon───{dbus-daemon}
        ├─firewalld───{firewalld}
        ├─gssproxy───5*[{gssproxy}]
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rpcbind
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd─┬─bash───bash───pstree
        │             └─bash
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}
[root@evan-01 ~]# 

在父 shell 中设定变量后,进入子 shell 后,该变量是不会生效的
实际上这个地方是没有的

[root@evan-01 ~]# echo $evan

[root@evan-01 ~]# 

我们退出当前的 shell 再来看看

[root@evan-01 ~]# exit
exit
[root@evan-01 ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon───{dbus-daemon}
        ├─firewalld───{firewalld}
        ├─gssproxy───5*[{gssproxy}]
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rpcbind
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd─┬─bash───pstree
        │             └─bash
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}
[root@evan-01 ~]# echo $evan
linux
[root@evan-01 ~]#

在这个地方又有了,也就是说我们刚才定义的变量不是全局变量

变成全局环境变量

[root@evan-01 ~]# export evan=linux
[root@evan-01 ~]# echo $evan
linux
[root@evan-01 ~]# bash
[root@evan-01 ~]# echo $evan
linux
[root@evan-01 ~]#
[root@evan-01 ~]# bash
[root@evan-01 ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon───{dbus-daemon}
        ├─firewalld───{firewalld}
        ├─gssproxy───5*[{gssproxy}]
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rpcbind
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd─┬─bash───bash───bash───pstree
        │             └─bash
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}
[root@evan-01 ~]# echo $evan
linux
[root@evan-01 ~]# 

同样是生效的,只要在下图红框的 shell 下,都是可以的
在这里插入图片描述在evan-01(2) 下操作

[root@evan-01 ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon───{dbus-daemon}
        ├─firewalld───{firewalld}
        ├─gssproxy───5*[{gssproxy}]
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rpcbind
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd─┬─bash───bash───bash
        │             └─bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}
[root@evan-01 ~]# echo $evan

[root@evan-01 ~]#

和上面的 bash 是并列关系,不属于上面的子 shell,所以不生效
在这里插入图片描述

unset 取消全局变量

[root@evan-01 ~]# unset evan
[root@evan-01 ~]# echo $evan

[root@evan-01 ~]# 
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值