秒懂:环境变量

前言

        1.Linux当中70%以上的命令程序都是用C语言写的
        2.执行命令程序和运行自己写的程序没有任何区别
        3.自己程序运行必须要带路径(绝对/相对都可)
        4. 系统指令可带可不带(带不要瞎带)


        变量具有全局特性是可以被子进程看到的
        无论是全局变量还是局部变量,子进程的代码是继承父进程的,数据是拷贝的(子进程和父进程的数据是相互独立的)
        进程的独立性:父进程的数据是可以被子进程看到&访问(修改❌),子进程的数据是不能被父进程

为什么我们自己的程序运行启动的时候需要带路径,但是系统的命令程序可带可不带路径❓

回答:在Linux当中,存在一些全局变量的设置(环境变量),告诉命令行解释器(bash进程),应该去那些路径底下去寻找这些可执行程序。

☞综下:ls不用带路径,因为ls所在的路径在环境变量当中。

图示:

 概念

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。
如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。
1.环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性 。
2.环境变量都是大写。、


整体理解

1.登录Linux系统的时候,OS就把系统配置已经加载到了bash进程的上下文中(内存),系统配置就包括环境变量。
2.当用户在命令行解释器中输入系统命令的时候,bash进程就拿到了命令行参数,根据环境变量,找到指令的可执行程序和路径,并创建指令的子进程。


(bash进程会根据$PATH在自己内存的上下文 配置信息中的 各种环境变量中找到对应的环境变量,并在此环境变量中找到对应的指令程序的路径和可执行程序)。

 作用:
 

1.bash在执行命令的时候,需要先找到命令。因为要把命令所对应的二进制文件加载到内存中。
2.bash的上下文的环境变量中维护了一批指令的路径。
默认这批指令的路径是bash创建子进程的搜索路径。
找到了就加载并运行,没找到就commend not fund


注意❗:系统中有很多配置,在我们登录Linux系统的时候,已经被加载到了bash进程中(内存中)


注意❗:有部分指令程序&路径就在bash进程数据内部,不在环境变量PATH中,不受环境变量的影响。

注意❗每个用户都一套的环境变量是从bash进程中拷贝的。修改A用户底下的环境变量并不会影响B用户底下的环境变量。

修改环境变量:

不维护在bash进程的配置文件中的环境变量中的指令路径,是不受环境变量修改的影响,随时可用。


命令行中修改用户A的环境变量,是不会影响到A用户的bash进程/用户B进程/OS中的配置文件中的环境变量,只会影响当前用户当前进程。重启之后也不会影响,因为bash进程会重新读取。


配置文件中修改用户A的环境变量,也不是会影响其他用户的bash进程/当前运行进程/OS中的其他用户的配置文件的环境变量,会影响当前用户的bash进程,正在运行进程和当前用户A中配置文件,重启也会影响。


关键点:在重启,用户&用户,用户进程&用户进程。
每个用户启动都会有一个单独的bash进程,bash单独给这个用户形成命令行参数表和环境变量表。以及配置文件都是每个用户都有一份。互相独立,不影响。
每开启一个终端就会有1个bash进程。
一个用户也可以有多个bash进程

 

注意:

我们所运行的进程都是子进程,bash本身在启动的时候,会从OS配置文件中读取环境变量信息,子进程会继承父进程的环境变量

而且这个环境变量也和命令行参数一样有一个命令行参数表。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值