day62 变量和bash进程的关系

day62 变量和bash的进程关系

1.什么是变量

变量,顾名思义

量就是记录事物的状态
变就是事物发生的状态是变化的

变量本来是计算机中的一部分,存取数据的机制;
变量的数据都直接存储在内存中‘

为什么有变量;
程序的本质就是数据的不断地变化,存取。

shell变量是什么

变量在每一种变量语言中都会用到。
shell 也不例外,shell用于变量的存取,数据,便于后续的反复使用。

2.变量的分类

1.环境的变量,系统中全局生效的变量
普通的变量(局部的变量)只对当前的环境,如login.sh脚本的生效

变量的生命的周期
1. 永久变量,写文件反复读取,让其永久的生效,如/etc/profile/的path修改。
2.临时的变量,如命令export 定义一个变量存储数据,关闭后失效。

2.1 是否添加export的变量

临时变量,是否添加export 的区别

  1. 不加export 只对shell生效,子shell看不到
  2. 加入export,当前shell会话的进程父进程shell都可以使用。
临时的变量,是否添加export 的区别
[root@master-61 ~]# pstree -p | grep ssh
           |-sshd(917)---sshd(1249)---bash(1251)-+-grep(1306)

什么是全局的变量,局部变量和父子bash的关系

什么是父子bash

1. 知道一个概念,你只要ssh连接上一个linux,登录之后,自动的加载 /bin/bash作为解释器,解释你所输入的所有的linux的命令

每一个人的机器都不一样,你应该看懂pid 和 ppid 的关系

第一,你的机器,得运行sshd得进程,917,等待用户得连接,ps命令可以看到结果
root        917      1  0 06:28 ?        00:00:00 /usr/sbin/sshd -D

第二,这是你ssh连接进来的话,当前得会话得pid是1249
root       1249    917  0 06:29 ?        00:00:00 sshd: root@pts/0

第三,你现在得所有的操作,都是基于1249进程id得会话得。
登录了linux之后,自动增加一个父进程bash,你的操作交给/bash去解释器执行。
# 当前第一个bash,进程id号 1308

root       1308   1251  0 07:01 pts/0    00:00:00 ps -ef


第四,后续得命令,作为儿子进程都是由bash父进程得创建如ps得命令。
root       1249    917  0 06:29 ?        00:00:00 sshd: root@pts/0

总结

1.执行一次bash,就单独开辟一个bash环境

2,执行一次exit就退出一个bash环境

3,linux种提供了多种得运行脚本的方式,区别在于,父进程shell得创建

开启bash得执行的方式

# 明确当前的第一个父进程
# 打印当前进程id号进程
echo "当前脚本执行的进程id是 $$"

exit 0

1.用bash运行脚本,和source运行不一样,一个会正常的结束,一个会断开会话,

2.直接使用bash命令运行脚本,会额外创建一个bash得子进程去运行脚本


3.[root@master-61 ~]# bash test-bash-pid.sh 
当前脚本执行的进程id是 1321

4. 直接使用bash命令运行脚本,会额外创建一个子bash去运行脚本
[root@master-61 ~]# bash test-bash-pid.sh 
当前脚本执行的进程id是 1321

[root@master-61 ~]# ps -ef | grep 1321
root       1324   1251  0 07:41 pts/0    00:00:00 grep --color=auto 1321

总结,bash运行脚本,额外开启了一个子shell,进程id是 1857,运行程序,运行结束后,exit,无所谓。

不开启子bash的运行方式

source 命令

[root@master-61 ~]# source test-bash-pid.sh 
当前脚本执行的进程id是 1251
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(管理机master-61) at 23:43:07.

Type `help' to learn how to use Xshell prompt.
[D:\NetSarang Computer\6\Xshell\Sessions]$ 

总结source和.点的运行,都是不开启bash直接在当前bash中的运行程序。

export命令

关于vim插件结尾的exit命令
需要你去你去理解
shell会创建父子进程bash的玩法即可。

先别去用exit命令,这个属于高级的玩法,在看足够多的脚本后,再去琢磨exit怎么用。

暂时,这里的表达,意思是,你先别去用exit命令就行了。bash变量玩明白了之后,学高级了之后再去用。

关于export命令的用法

关于变量的知识,以及关于全局的变量,和局部变量的作用。

临时添加变量,是否添加export的区别

总结时
定义的变量,是否添加export的区别

1.不加export,只对export,只对当前的shell生效,子shell看不到。
name="不加export,儿子bash看不到这个变量"

加export,当前shell会话的进程,父子shell都可以用。
[root@m-61 ~]#export name="休息一会,待会继续,先消化父子bash的作用于关系,和变量的关系"

进入子bash
[root@m-61 ~]#
[root@m-61 ~]#echo ${name}
休息一会,待会继续,先消化父子bash的作用于关系,和变量的关系

环境变量文件的顺序

1.登录ssh会话后,要加载/etc/profile
2.执行用户家目录中的环境的变量配置文件 ~/.bash_profile
3.执行 ~/.bashrc
4.执行/etc/basgrc

变量规范写法

便量由三大部分组成
1.变量名。用于访问变量值的入口、
2.赋值的符号,
3,变量值,具体的数据

变量名的命名的规范

这里我就不写了

posted @ 2025-05-02 15:00  国家一级冲浪yzk  阅读(11)  评论(0)    收藏  举报