00:00
嗨,各位同学大家好,今天呢,我们来学习关于校的一个环境变量啊。那前面呢,我们基本上把校常用的一些指令啊给大家过了一遍,这节课呢,我们开始去了解一下关于在写校脚本里边经常用到的啊,这个环境变量,而且这个环境变量呢,也是大家在写脚本的时候经常会出现问题的一个地方啊,有的时候这个变量怎么没生效是吧,有时候没有定义啊等等一系列的问题,导致我们这个脚本没法正常去跑起来啊,也有可能跑起来,然后运行的是错的,对吧。嗯,所以说环境变量这块一定要去了解一下啊,咱们这一节课主要讲的一些内容啊,首先给大家讲一下变量的一些分类啊,它分为全局和局部,这个应该好理解啊,全局就是对所有环境都生效是吧,那局部呢是指对当前环境生效啊,嗯,然后教给大家怎么去定义环境变量,怎么去引用环境变量啊,以及怎么去删除对吧,怎么去那个。呃呃,对,了解一下这个pass啊,Pass环境变量的一个实现,还有一些是数组变量,数组变量跟我们普通变量就有一定的区别了,需要大家有更强的一个逻辑性啊。
01:11
OK,那我们先来说一下什么是环境变量啊,环境变量呢,我们给大家先来操作一下。我们可以先打开一个终端啊。怎么操作呢?在这里边我来给大家随便去定义一个,比如说我们说。A等于一是吧,A等于一,那这其实就是定义这个变量A啊,等号呢是赋值啊,赋值就是把一赋值给A啊,这样的话,我们声明了一个环境变量啊,声明环境变量,这是变环境变量的一个声明啊,那如果如何去打印环境变量呢?我们用IO啊打印变量啊,就是前面加个Dollar符号啊,大家记住一点,所有以Dollar符号开头的啊,那么这些都是什么呀?都是变量,OK,都是变量。那这样的话,你看A的值就是一对不对,说白了就是就跟我们上学的时候去学这个X和Y的一样,是吧,X等于几,Y等于几,然后求一些方程式啊等等等等对吧?那么这里面啊,其实就是负值啊,A等于一啊A等于几等于几,那前面等号左边等号前面的啊是变量的名称,OK,变量的名称啊等号后面的是我们的变量所对应的值。
02:24
OK,所以说它的格式啊,就是变量名称。变量名称,然后等号啊,注意没有空格啊等号,然后变量值。对吧,这是一个最基本的一个变量的一个声明格式啊,最简单的,那么如果你想打印的话,我们是IO是吧?通过IO去打印啊,然后Dollar加上我们的变量名称,对吧?是这样去打印,这是它的一个基本的使用方法,那么。大家看到了这样的一个使用方法,大家能想到这个变量相当于什么呢?
03:02
就相当于什么呀,同学们啊,比如说我现在有很多张银行卡是吧,那么银行卡里边存的是什么,是我们的这个。钱是吧,是我们的钱啊,那么我可以在每张银行卡里边存不同的钱嘛,是吧,那你可以理解为这个银行卡就是一个什么呀,就是一个变量,而而这个变量的值是什么?就是我们所存进去的钱对不对,就是随进去的钱啊,说再通俗点就是钱嘛,对吧?就是钱啊,所以说白了就是变量,就是帮我们就存储东西的啊,存储这些数据的一个地方啊,看一下官方的一个介绍啊。Bash shell用一个叫做环境变量的特性来存储有关shell绘画和工作环境的信息。这也是他们被称作环境变量的原因啊,为什么叫环境变量啊,是因为它存储的就是与环境有关的这些信息,对不对?OK,那么这个特性啊,允许你在内存中存储数据,它在这里面声明的所有的变量都在内存当中去存储,也就是说你重启之后啊,可能会出问题,对吧。
04:08
然后这是以便程序在shell中运行的时候能够访问他们,对吧?这也是存储持久数据的一种简便的方法啊。那么这就是环境变量的一些简单的概念啊,基本上非常简单啊,非常简单。那我们来说一下这个全局变量和这个局部变量啊,什么是全局变量,什么是局部变量。呃,大家可以这么理解啊,通过一个port啊去声明的变量,这条指令去声明的变量,比如说1PART a等于一对吧,那么这时候呢,这就是一条全局的变量。OK,这是一个全局的变量啊,而D等于二,这是一个局部的变量,就像刚开始我们这样去赋值对吧?那么这就是个局部的变量啊,怎么去验证呢?好,大家先打开一个拜事环境,直接输入一个拜事,那这时候虽然看不出有什么区别来是吧?但是它其实打开了一个新的什么呀,新的shell解示器啊,然后你在这里面去打印他们的值A口到A,诶,大家看到A的值是不是没有变化呀,是吧?好,那么我们来输入一下Dollar b。
05:19
啊,大家看到B的值是不是就没有了,对吧,这就是全局变量跟局部变量。OK,全局变量呢,是生效于所有的shell环境当中啊,比如说在这里面我再进入到一个she对不对,那么我在A口到了A,但还是有的啊,全局变量啊,生效于所有的环境变量,所以说叫全局嘛,对吧。全局局变量啊,生效于所有的少环境中,OK,而局部呢,仅生效于。当前的环境中,好。
06:05
这是他们的这个作用欲啊,叫做作用域,就是全局跟局部。这是他们俩的区分啊,而全局变量是怎么定义的?我们使用一个part是吧?A等于一是吧,这样的话就说明了一个全局变量啊,那么还有一种写法,好,这里先补充一下,同学们,你看我现在进入到很多个shell里面是吧?我可以通过EP去退出,OK,好,回到我最原始的这个shell里边了啊,那么我来说一下刚才我们所说的这个生效全局变量是吧?那么我们刚才定义了一个B,对不对?B对不对,那么能不能把它变成全局变量啊,像刚才这样啊,B等于二对不对,那么我可以通过一个part。B,对吧,那么这样的话呢,我打开一个BI Apple Dollar b,对吧,是不是有啊对吧?这样也是一个生效全局变量的一种方式,OK,就是你先定义变量,然后通过一个泡把它声明为什么呀,全局变量。
07:04
好吧,这是一个小的实验吧。两种写法两种写法。OK,这是环境变量,OK,然后局部变量呢,它就生效于当前环境当中啊,它的定义非常简单啊,其实这就是定义的一个局部变量,对吧,直接这样去定义就可以了啊。啊。这是全局变量跟局部变量它们之间的一个区别啊,就是作用域的不同,大家每次在验证的时候就可以打开半是吧,打开办事去测啊。OK,打开一个新的BA,然后你去测试看它能不能正常的去打印出来啊,能打印出来的变量基本上都是这个全局变量啊,那么如何查看系统中的所有的环境变量呢?
08:04
大家知道一点啊,就是我们先进入到每个用户下面,你看这是root特用户,这是它的加目录对不对,LS-A呢,是你看同学们啊,我执行LS的时候,它是这样显示的对不对?LS-A呢,是显示一些隐藏的文件,那么在Linux里面,甚至在Windows里面啊,你这个隐藏的文件它都是以点开头的,OK,所以点开头的啊,所以说我们接下来要说几个文件,一个是点半是RC啊,一个是点半是profile是吧?那么这就是用户默认的环境变量,OK,用户默认的环境变量啊,我们打开来看一下DRC。大家看到了吗?这里边有个二四是吧,那么这个是别名的意思啊,当你执行2M命令的时候,其实执行的是2M-I对不对?当你执行CP命令的时候,它执行的是CP-I当你执行MV的时候,它执行的其实是MV-I。明白,同学们好,然后你看下面这是一个呃生效对吧,它会检查啊,检查这个etcr的BYRC是否存在,如果存在的话就会把它给。
09:06
生效一下啊,这样的话是生效环境变量。好吧,生效对对,生效环境变量,OK,生效环境变量啊,这是这块好吧,这个BYRC这个我先了解一下啊,这是用户自己去定义的一些变量,可以在这里面去写。OK,还有一个文件是点,但是。Profile对吧,那这里边也是一样的啊,它会检查你当前宿主目录下面有没有BY小C对不对,有的话就把BY小RC给生效。然后最后定义了一个pass变量,大家看到吗?啊,把当前home下的B加到了什么呀,加到了pass当中。OK,这是这是这块好吧,这是这块啊,这是这几个文件。那么如果你要想查看系统的环境变量,你可以使用UV啊,使用UV命令呢,你能看到当前系统中的所有的变量。
10:03
OK,你看这么多变量都有了。那么你想查看某一个变量怎么办呢?你可以通UV什么呀。对吧。各种方式都有I下,比如说home啊。对吧,Home home呢是一个环境变量啊,它指定的就是每个用户的加目录。OK,你可以通过因为命令啊,去查看系统中的所有变量,那么这些变量呢,便于我们去排错啊,你一定要知道怎么去查看。好,这是环境变量的一个查看是吧?啊,然后我们来说一下环境变量的一个删除啊,这个变量的定义就是这样去定义了,刚才顺便就说掉了啊,就是变量的一个定义方式,全局的你就使用一个part对吧,那么局部的你就直接这样去定义就可以了啊,然后说要删除啊,删除的有一条直接叫onset啊,比如说我们举个例子啊。呃,我们看一下Dollar a,它是一个全局变量,对不对,那么我们不想设置全局变量啊,那么可以这样检查一下Dollar a。
11:05
A。啊,A还挺多是吧,你看A等于一对不对啊,那这样吧,我们就group下A等于一是吧,是有这一行的对不对啊,那我不想让它设置了r onet对不对,Onet啊,然后写上A。那这时候你再group一下,哎,这个变量没了是吧,这是删除变量。OK,这是删除环境变量的一种方式,大家看到了吧,这是一种实现方式啊,这是删除。好,这是这块,而且我要跟大家说一点,就是注意一点啊,我们现在做实验室,给他随便起个名叫AB对不对,那么实际在写,在编写的时候啊,我们要注意一点,就是shell环境变量,它都是用的什么呀,都是用的是大写字符。OK,用的都是大写字符。啊,就是大写的啊,不要用小写,你看都是大写的对吧,就是校学校的这个命名的一种风格啊,命名的一种风格。
12:08
Okay。所以说大家尽量使用大写啊,在校编程中。尽量。使用大写字符作为。变量名称OK,那这里这里面就说到一点呢,就是大小写是吧,那么大写呢,它是代表一种环境变量,小写的它又代表一种是吧,它俩是不同的,OK,大写的A跟小写的A所定义的环境变量,它们是不一样的。明白了对吧,所以说这是区分啊,他们有大家写区分的。好,这是变量的定义,以及简单的打印是吧,以及怎么去查看,以及怎么去删除,那么现在呢,你对环境变量基本上有一个。相当于增删改查的这样的一种方式是吧?啊改我刚才没说对不对,你说B等于一,那我想把B改成啊,B等于二,我把B改成一怎么办?
13:07
来,先来看一下,到了底啊。那B等于二,那么你现在就改呗,B等于三对吧,那么再输入一下到B。OK,它就变成三了,对吧,直接这样去再次给它赋值就可以了。是吧,所以说就是增删改查,基本上都跟大家说了啊,变量的这个基本操作。好,然后我们来补充一下关于pass环境变量啊,Pass环境变量,那么就需要让大家了解一个文件。嗯。Pass变量定义在哪里啊?环境变量的一个文件也是经常我们在写啊,自己去定义环境变量的时候,我们一般会定义到这个ETC下的profile是吧?好,我们来摸一下啊,ETC下的profile是吧,这里面你看有这么多内容对吧。内容还是挺多的啊,这些都是什么呀,都是我们要。
14:00
初始化的一些这个环境变量,OK,那一般我们都会把环境变量在这里面去写啊,我们先打开ETC的。这里面放到最后一行大写的G啊,这里面呢,我们一般会在这里去定义pass环境变量,OK,比如说我现在我们先让大家看一下pass变量长什么样啊,I Dollar pass pass就是我们路径嘛,对吧,你翻译过来就是路径啊,比如说你在pass里面定义的这些变量,那么在这些路径下面的所有的可执行程序可以直接什量。可以直接这样去调用,而不用你再什么写一个这样的路径了,是吧?我举个例子啊,大家看一下啊,你看这里边有个u local下的是吧,我们先CB到us localo下的,这里面存储的是什么啊,这里面没有是吧?换一个目录啊CD啊,Usl local下的B是吧?这里面肯定,哎,这里面没有。好,那就是USR啊,UR下载SK。
15:01
是吧,有很多是不是好,那么我们经常用的哪些指令啊,比如说我们找一条指令来,我们看一下啊,我们找一条指令啊,比如说。这边有啊Dis对不对,OK,这是咱们之前学的这个分区的工具对不对,好,然后它在哪里,在这里啊,那一般如果你们不加的pass里边啊,USR下的下的。这样这样去执行,OK,下面怎么他这样去执行的,对吧,你得写上它的什么呀。完整路径对吧,选它完整的一个绝对路径对不对,那么如果你把这个目录啊加到了。加到哪里,加到了这个pass里面去。Us下的你看有了对不对,那么我们执行的时候是吧,就直接以这种相对路径的方式去执行了。OK。明白吧,直接这样去执行就可以了。所以说这是pass的一个作用啊,就是这些可执行程序怎么去执行。一般我们比如说安装一个Java啊,安装一个其他的是吧,我们都会去设置一些环境变量啊什么啊等等工具啊。
16:06
了解一下好吧,这是一个pass啊。好,那么我们能不能重新去定一个pass环境变量呢?是可以的啊,尽量呢啊大家注意一点,就是这些默认的pass啊,你只要追加就可以了,不要去改他们,OK,因为系统在启动的时候,比如说你这个BA命令一样,它都是命令对不对,都是一些可执行的文件,它都在这些路径下面,所以你不要改,你把pass改了之后,后期可能你的命令都执行不了。啊,所以我们只追加,不改它原始默认的。好吧,这个啊是一定要注意一点。嗯,那我们今天先写一个东西吧,写一个这个,我们先写一个 Vma.SH啊test.test.sh是吧,我先写个脚本啊减号感叹号,咱们拼一下的flash,这是脚本的说明对不对?好,那么我就IO一个hello。
17:04
Hello word对不对?OK,我写好了对吧?同学们好,我们刚开始说这个脚本有几种执行方式啊,我可以通过SH执行,我也可以给他加一个可执行的权限去执行,对不对?好。好大家来看,那么我想执行T点,我怎么直行。是吧,哎了,哎,这样你执行不了对不对,是不是执行不了,同学们,哎,你怎么能够让它可执行呢。能不能我们直接输入它去执行,好有一种办法啊,那你既然看一下它在哪个目录,在如图目录下了,对吧?那么我们就重新定义pass变量啊,你看pass等于谁呀?Dollar pass什么意思?Dollar pass是不是原始它这个值啊,对吧,那这个值加在这里面,而且你看它是以冒号来做分割的是吧,冒号啊,啊如此。站着加啊,然后你再输入test.sh。
18:03
Hello word是不是就出来了对吧,所以说这是环境变量的一种。啊,Pass变量的一个。好处嘛,对吧,就是可以这样去执行。而你不用再写什么杠如下的pass掉S,当然这样也可以执行,但是你这样不更简便一些对吧,所以说这是。就是这块。啊,这是刚才通过一个简单的小实例啊,让大家了解这个pass变量啊,它是作用于什么啊,作用于哪,这是我们刚才定义的这种方式,对不对啊,那么一般呢,我们会不会在这里去定义啊,因为你现在打开一个新的BA对吧,那么这时候你再艾扣一下Dollar pass。啊,已经加上去了,对吧,已经加上去了啊,那么有的时候呢,它会不生效啊,那么这时候我们一般建议大家在这个profile文件里面去改这个pass变量,我们就在这里去改,OK,在最后一行去加啊,比如说。一个port pass等于pass冒号如此。
19:05
对吧,我们一般都是这么,嗯,都是这么去改啊,这是一个路径,对吧,改好了对吧,改好了之后你保存并退出,然后通过source命令啊来去加载它。明白吧,加载这些环境变量啊,当然你也可以使用source去干嘛呀,去执行脚本啊,比如说source test.sh对吧,你也可以这样去执行。SS呢,其实也就相当于把这里面的变量再生效一次。那么这种情况下,就是我们在呃企业里面去装JDK是吧,装JDK啊,装一些其他的依赖组件的时候,经常会需要我们去这样去改啊,这样去改善我们的这个pass变量。好吧,这是一点啊,这是我们经常去往里面去定义的啊,所以说变量大家下来的时候养成一个好习惯,就是往这里面去改就可以了。好吧,这是pass环境变量啊,以及pass环境变量的刚才有什么作用,刚才也给大家演示出来了。
20:04
对吧,这个文件很重要,不要删哦。也不要定义一些跟系统冲突的啊,你跟系统冲突的就相当于把系统默认的变量给什么呀,给毁掉了对吧?给毁掉了啊好,这是这块,然后我们来说一下这个数组变量啊,什么是数组变量啊,接下来我们说一种数据类型啊,叫做数组,好有的时候我们可以这样去统计啊,我们先来写一个A等于括号是吧。啊,比如说这样吧,我们形象点。Student student,对吧,等于好,这是一个数组,OK,数组是用两个小括号对不对表示啊,比如说。有谁呢,有。AA逗号啊AA啊,然后BB。CCCD对吧?那么这样的话呢,我们就定义了一个数组啊,然后我们echo一下这个Dollar student student是吧?那这时候你看它显示的是数组里面的第一个同学是吧?那我来说这个啊,刚才刚才说这点就是student,就是定义的学生对吧?来解释一下啊,这里面有四位同学是吧?分别是AB与CCDD,对不对四位同学。
21:19
那么这样的话,我就可以定义一个数组。那么这时候我来打印的时候,你看它输入的默认的是数组的第一个同学是吧?好,那么它就是这种方式啊,那你想获取第二个同学怎么办。啊,这里面有一个这样的一个概念啊,大家等会儿啊。对吧,他哎。我看一下啊。Dollar。OK,我们来,呃打印下是这样的是吧,那像这种情况,你就得用这种Dollar大括号的方式啊,其实你要这样去写也行,对吧,也能打印出来对吧,然后你这里面就得写它的位数是吧,第一位。啊,只有linu不是在Linux里面或者变量里面,零代表是第一位,OK,零就代表的是第一个同学对吧,然后一呢代表的是第二个同学。
22:09
对吧,C呢代表是。是吧,这样的一个过程,OK,你可以这样去输出他们每一个每一个数组里边的内容。OK,同学们,这是数组,OK,这个数组明白吧,就是这样去存储的啊。拷一下啊,你可以通过V啊,然后去一下。对吧,来。这里面没有啊,这里没有。OK,这里面是没有的啊,我先把这个记下。所以说刚开始我们先这样去定义,定义一个数组,然后这样去打印,默认它显示的是第一位同学是吧,然后后面我们就可以通过啊这种方式去打印了。括号啊,这里面就可以写我们的一些操作了,对吧。
23:01
这样去写啊。OK,这是数组变量啊。嗯,你像这种情况下干干嘛用啊,同学们这种适合一种什么场景啊,就跟我们在写这个JDK一样是吧,比如说我们定一个JDK啊,那么JDKS吧,那么JJDK呢,它有多个版本啊,有JDK7是吧。有GDK8啊,JK9啊,GK11是吧?等等等等啊,多个不同的版本,我们可以通过这种方式定义我们这个系统可用的一些JDK对不对,比如说我想用JDK几啊JK7对不对,那我可以获取JDK7了是吧I。啊,因为shell它特殊嘛,所以第一个获取的它就是你不加啊,它默认获取的第一个啊,那其实它相当于什么呀,相当于这样的一个格式嘛。OK,了解一下,这是数组变量啊。
24:00
好,这是环境变量里边的所有的一些内容啊,我来看看有没有给大家落下的一些东西。呃,环境变量的定义啊,然后总结一下吧,这节课啊定义。怎么去定义环境变量,以及环境变量的一些作用啊?规范是吧?建议可能使用这个大写字符去表示,他们是大家写唯一的啊,而且环境变量的开头肯定不能是数字啊。你比如比如说EA等于E是吧,那这这这它把它当成什么呀,当成这个命令去解释了。知道吧,不要加数字啊,不能是数字。好。这里面我来写一个icq啊。基本上我可以使用横杠啊,下划线啊,基本上不要用数字开头,好吧,不用使用这些数字开头。
25:03
好,然后说了一下全局变量跟局部变量它们之间的一些定义和区别啊。啊,怎么去查看系统中的环境变量对吧,删除环境变量怎么去删啊用on。啊,ETC profile这个文件的一个作用,以及pass对吧,Pass这个环境变量啊,很重要。这些都是我们日后经常用到的啊,所以说这个了解一下好吧,实验一下。后面肯定会用到啊,不管你是在Linux里面装一个服务啊,还是去干啥,可能都会用到这些。啊,然后数组变量这个就相当于一个扩展,就是我们在写脚本的时候啊,你可以灵活的通过这种方式,你就不用再定义student a student b student student d,对不对,而是直接把它的name是不是都给搞搞出来了,对吧。OK,这也是常用的一种实例啊,行,那我们这节课就到这里啊,感谢各位同学,今天呢,我们所讲内容就这些啊下的环境变量。
26:01
好,我们大家下来的时候可以多去练一练,好吧,多去练一练。
我来说两句