00:00
大家好。欢迎大家继续收看上硅谷的云计算课程,我是沈涛老师。这节课呢,我们还是12基础啊,快要结束了啊,12基础,那这节课我们来总结一下环境变量配置文件,那么。首先我们来看第一个命令source,也就是点这个命令,我们说过了,它的作用是不是直接调用环境变量配置文件,原因环境变量配置文件是需要重新登录。不一定需要重启,它是需要你要退出,然后重新登录它才能生效,那我们觉得有时候重新登录很不方便,所以可以使用SS命令,或者是这样来直接这个加载这个环境变量配置文件,让它直接生效,哎,这就是SS的作用,这个命令我们前面见过了,知道一下就行好。我们开始来总结我们系统中生效的环境变量配置文件。各位。目前我们系统下环境变量配置文件主要有这样的一个配置文件。
01:00
其中你分清楚啊,它分了两类,一类是放在ETC目录下的,一类是放在加目录下的。那么区别在于放在ETC目录下的是永久生效的。只要写进去不不能叫永久生效,应该叫对所有用户生效啊,就是不论你是root用户登录,还是U1U42普通用户登录,写在这里的配置都会生效,而写在加目录里的这个环境变量配置文件呢,它只对当前用户生效,诶,这个好理解啊,你写在root的加目录,那就只对root生效,写在U41的加目录就只对UC生效,OK,所以啊,看清楚先分了这两类。这个ETC下的和加目录下的,那其中。其实这些环境变量配置文件有一些我们之前都已经见过,那我们这里整理一下各位。它生效,它是其实是一个调用一个,就是一个生效了,然后串起来去调用下一个,它是通过这样的方式来生效,OK,但是啊,如果你仔细看,你会发现这里面好像有两个方向看一个方向是从这儿看,先调用这个文件,调用它,调用它,这是一个分支,到这里结束了,然后呢,调用它,调用它,调用它,然后命令提示符登录,对吧,这是一个方向,这是这两个是一个方向啊各位也就说是个分叉,这个配置文件ETC下的profile既会调用它,也会调用它。
02:31
然后呢,调用完成这里只是加载完就结束了,这块呢是会登陆,哎,这是一个方向,还有一个方向是直接从这里。开始调用,由它调用它,调用它,调用它,那为什么会有两个方向调用原因?第一个方向,也就是这里从它开始往下调用。然后调用它,调用它,调用它这个方向呢,是正常的登录情况下,用户如果正常登录,那么会走这样一条路线,由这个文件开始,由它去调用后续的这些文件,把里面的配置全部加载上,加载生效,最终看到起始符,这是登录情况下调用的配置文件顺序。
03:15
而我们换个颜色啊,如果是从这里开始走,走到这儿。加载加载完最后没问题,然后看到提示符,这个是非登录的情况下非登录,什么是非登录,登录好理解啊,输入账号密码,登录的时候输入账号密码就就生效非登录呢,比如说你记得吗?我们可以用速切换成我,如果我是root。我速切换成U对吧,那这个时候我是没有不需要输入用户密码的,我是不是就可以直接进去。对吧,那还有一种情况就是负12。我负扇当中开启了一个子扇。这块是不是也没有输入用户名密码,我是不是也可以直接进去,那这种情况下,也就说如果我切换成U41了,我的这些变量怎么加载,它是通过这种方式来加载,通过这条路线。
04:07
而如果是我,比如说负12生命的紫12,那我紫12的环境变量也是通过这条路线,哎,所以啊,它是分了两条路线,红色的那条路线是登录Sha时候,用户登录的时候执行的这个Sha,这个环境变量配置文件的加载过程。蓝色的这个就是非登录用户,不是采用正确的输入用户名密码这种方式登录的时候,它加载的是下面这条路线。OK,那绝大多数情况下我们都还是什么,绝大多数情况下我们都还是正常的登陆加载。对吧,通过这种数据加载,那我们就来先的正常登录数据,我们看一下它加载的是什么,首先由系统登录完成之后,由启动程序开始调用这个ETC下的profile,调用这第一个环境变量配置文件。这个配置文件我们其实打开看过了,里面保存的内容是比较多的。
05:01
哎,有当前的登录用户,然后呢,你的登录了用户名邮箱派环境变量对吧,讲过了。主题别二历史命令条数,这个u must的权限都是说过了对吧,那我们来看一下打开。ETC下的profile,好,那么我们可以看到,呃,从头开始啊,有什么这块是进级的PA,当然这里只是先进义的函数,后面也会加载啊,那pas,然后呢,判断了我的登录的用户的UID号EUID,然后呢,用户名,登录名,邮箱对吧?然后这里把PA加载过来,其实这里只加了这三个路径和user local下的。那其实我们说我们加载了这个,在这个配置文件里就加载了这三个PA部,那为什么我们现在看到的PA那么长啊,原因在后面的这个里面。在后面这些文件里了吧,又把它重新赋值了,哎,我们都知道变量啊,X等于一,X等于二负了两遍值,X值是多少,X是不是等于二后赋值的,这会这个覆盖前面负值的这个对吧?好,那这里只是给它覆了个基础值对吧?好然后呢,往下看主机名。
06:22
对吧,包括历史命令条数对吧,包括我们的这个u must的权限是不是都讲了对吧,好。这段内容。它通过一个for循环加载了就是这个内容。ETC下profile.d下的点新点SH,就这个图片好像看不太清,就这个啊,对不对,换句话说啊,通过这个配置文件它。调用了这个目录下所有1.sh结尾的文件,调用了这些文件,各位那。它就是通过这样一段内容来加载的,那我们打开这个目录看一下来,我再开个终端。
07:03
我们四季到一七生下这个profile。点地下这个目录当中,我们可以看到这里面有很多点SH结尾的文件啊各位其他的都没有生效,这都是加载CHSH的时候生效的配置文件,那我们这里生效的只是这些SH结尾。OK,那这些文件是什么呢?其实真正我们有用的就这一个lunch语言,点SH我们打开看看干嘛?这里面写了通过他调用了这个女的这个。这个文件看到吗?一切C下S菲下的I18N看啥东西就是这个。哎,通过它是不是加载了所有的点SH结尾了,其中有效的就是这个了。点SH,它加载的是这个E7C下C4菲下的I18N,还记得吗?我们说过这是默认语言,在里面保存的是系统下的默认语言,也就是说你重新登录之后,你的语系环境通过它来规定,哎,那我们现在我们看一下。
08:10
VETC斯考菲格下I18I18N里面内容中文语系,所以我们现在登录的时候,我们加载的是中文语系啊,加载的是这个语言,好,那这是这个分支啊,通过它调用它,调用它,其实这里还有很多其他的SH,那这些SH呢,那个一般来说我们就不用看了,我们知道一下它加载的这些文件就行了。然后呢,它往这边走,哎,开始调用这个配置文件,第二加木下的被是点POCBTC下的,我们打开看看。加目录下的,那我们现在就在加目录对吧,好调用的是这个ETC下的这个点被试点什么。Profile啊,调用它对吧,我们开始调用第二个环境变量配置文件,那我们打开点BSHCBSH下的profile OK,打开它这个文件就简简单多了干嘛。
09:14
如果这个文件存在,哪个文件,下一个文件看呢?如果这个文件存在,则由它去调用这个文件咋调用呢?看点。SS微微嘛,调用这个文件,哎,你看这也就是说我调用了它,它调用了它。最后它会调用,它调用完登录成效,OKOK好。那好。这个文件里除了会给它调用这个这个后面这个点B之外,我们还会给PA目录重新赋值,看到变量叠加在原先的PA后面加入Dollar home下的B,也就是如果我是root我的加目录下的并目录加在我的PA路径。
10:02
哎,那我们输出一下,你可以看到啊e Dollar pass,看除了有这些一开始这些这些东西在里面对吧,我们看由root下的B是不是叠加在了这个池的后面。没错吧,啊把我的值哎哪去了,这样把我的这个加木录下的B也叫进来,同时把它生明成环境变量,哎,讲过了对吧?好了,那这是第二个文件被加载了,它呢又会去调用第三个加不下的点BS叉C,那我们看看。BC打开。别名是不是就他调用这个了,对吧,然后呢,由他是不是去调用了ETC下的pro这个BRC边加在它,也就是说。由他是不是调调用了它。没错吧,好,那这里现在写的就是别名对吧,所以啊,你还记得吗?其实我一开始说,我说你其实把别名写在这些配置文件当中,哪一个都行。
11:04
写在哪里都是原因。这四个文件它是串在一起,一个一个调用。只要你的值没有被覆盖,那么写在哪一个文件里它都会生效,对吧?OK,好,那现在是不是由它调用它了,最后一个atc下的BBASHRC。打开C,下了BSHRC。这里定义什么?首先,PE。对吧,写的很复杂,其实最终生效了,是不是就是这里定义了我的当前系统的提示符,OK,然后呢,你会发现一件事,他又开始定级派。怎么又进行了一遍?前面我们这里是不是已经定义过了,他已经是个生效过了,那他这后面怎么又开始定义排,那你仔细看一下它的说明看。We'are not a log share。
12:03
后面这些变量,它是在not log Sha没有登录的时候,没有登录Sha的时候生效,也就是说啊。下面这部分了,就pse以后的这部分是什么,当用户非登录的时候,我们说过没有输入用户名密码的时候,它加载这些东西,然后生效,那也就是说。如果是非登陆,我们是不是也得有派变量存在,它是不是才能正常使用啊,那它通过它来调用,它对这些东西,对正常的登陆12就不起作用。OK,看清了啊,那也就说这些下边的这个PA只针对的是正常登录上,不光有PA好吧,这个下边的针对的是没有输入账号密码的非登录,是是要生效正常登录,前面就已经进级完了啊,前面已经几次进去进级完了,包括u ma诶我们前面说啊,这里是不是进去过一遍。
13:02
这里是不是进去过一遍you mask,怎么在后面又进去一遍啊?原因看着not login,同样这个you mask依然也针对的是我们的分输入密码登录了。包括下面又进行一遍PS1都可以不用理它,为啥not lo no lo的事看到了,换句话说,这个文件虽然没了到底了,虽然写了很多,但是真正其实生效的就一个东西,在这里其实就一件事,就是PS1。命令的提示符来,换句话说,我再说一遍,我们现在在讲登录啥,也就说如果你输了用户密码,你开始登录了。它就开始先加载它,由它呢,先去加载它们把语言环境定义出来,然后再用它去加载这个来,在这里边这个里边定义了一下,把看重新定义了一下,再加给它定义的别名,对吧。然后再加在它把PS1定义出来,剩下的内容什么历史命的条数啊,用must的值啊,都在第一个里面,哎,那这样的话,我们这些需要登定义的变量就定义完了,看到75更多,这是正常的登录顺序。
14:14
看懂了,OK,所以我们说啊,其实理论上来说,如果你想让这个环境变量生效,这几个文件写在哪一个它都可以,因为它是顺序加载的啊。好,这个了解一下就好,其实这个其实还是因为它是系统写的配置文件,相对还是比较比较难的,看起来不是太太清晰,我这里只是要求你们知道把这些文件名给我记下来啊,理论上来说,你自己定义的永久生效的话,你们俩写在这里面的哪一个都可以都可以。好。那非正路12这个情况见的不多,我们简单知道就行了,好了,知道这事。那这个时候,哎,这里啊,文档我写了第一个配置文件里要用的是什么。
15:03
第二个配置文件里。第二个配置文件里写的是什么对吧?第三个配置文件里写的是什么都写了啊,包括我这里说了,因为ma和PA,包括这些文件都是非登录上尔的时候才会生效的,OK,都是非登录的时候才会生效的,否则这个里面指定的PS1变量是一个变量,好知道这些那好,但是啊,我们有时候可能会出现这样一种情况是吗。你登录之后,我们正常登录之后,我们的系统提示符都应该是这样。用户名,主机名所在目录到了骑士符对吧,但是我们有些学员他会发现他登录之后,他的骑士符变成了这样一个简单的版本。什么原因?什么原因?各位回来看啊,我们刚刚都说了什么?PS1的命名或者说变量的声明定义是不是在这个里面定义了?
16:02
那如果我误删除,把这个文件给删了,我问你,你的命令提示符还能定义吗。那第一个了,他是不是就写成了这样一个简单的被试版本的这样一个提示符了。是不是就写成这个。没错吧,换句话说,万一你把这个环境变量这个设置PS1的这个配置文件给删了,你的PS1就没有办法正常复制了啊,当然不光是删这个啊。你如果把这个前面这个删了。它也依然没有办法生效,原因我们刚刚看到了,它是顺序加载了,由它调用它由它调用它由它调用最后一个,你把这个中间这条路给斩断了,这个都丢了,那我问你最后一个能调用吗?各位是不是也调用不了啊?哎,这个还真是一个常见错误,各位一般我们不会删系统下的这个配置文件,尤其初学者一般不会,你不敢碰,但是加目录这两个玩意儿,你保不齐就会删除。
17:02
你一不小心把他给干掉。这都是很有可能的,各位干掉之后最典型的一个办法就是这个情况,就是你的提示符变成了一个看起来极其别扭的简易提示符,原因就是把它给删了,那怎么处理啊,各位找一个其他的系统把这个文件拷回来就行了,当然你要有能力,你手工自己去写也行,我觉得不太可能啊,所以找一个同名的配置文件拷回来它就可以了,就没问题了。OK,好。那各位这些就是我们整个系统当中登录的时候生效的环境变量配置文件,这些文件还是比较重要的。尤其我们前面讲,其实我们前面讲哪个就说过哪,比如说讲别名,我们是不是就说过他对吧,讲句must,我们是不是就说过他。对吧,讲哪个都说哪个,那我们这里干嘛把它整理一下,告诉你一下它的加载顺序,从而然后呢,我们以后也要知道,其实理论上这些环境变量,其实写在这些配置文件哪一个都行,但是还是建议你他原先写在哪,你就还是写哪啊,这样出题的几率小,OK,然后呢,记得一旦出现这种剪辑提示符这种情况。
18:14
这种情况你就记住了,是你误删除了这个环境变量配置文件,导致PS1变量没有生效,这种情况还是比较常见的。好,那这节课呢,我们就讲到这儿,我们讲了一下环境变量配置文件的这个加载顺序,好了,那这节课内容就是这样,我们下节课再见。
我来说两句