【Linux学习笔记】35:登录时生效的环境变量配置文件 下

来源:互联网 发布:风云同步助手软件 编辑:程序博客网 时间:2024/06/05 15:41

[1]继续上节没说完的/etc/profile

这里写图片描述
这里是说,如果登录用户的UID大于199,那么预设权限掩码umask是002,否则就是022。我们登陆的是root用户,UID是0,所以上节查看到的掩码是022,这在这个文件中就可以更改。
这里写图片描述
可以看到随后它调用了/etc/profile.d/这个目录下的所有后缀名为sh的文件。
这里写图片描述
课程中只学习其中的lang.sh这个文件。

[2]/etc/profile.d/lang.sh

这里写图片描述
可以看到它调用了/etc/sysconfig/i18n这个文件。这个文件在将语系变量的时候讲过,它的作用就是定义系统的默认语系。
这里写图片描述
也就是说,系统一启动,就会通过这样的层层调用让这个文件加载,从而让语系变量中这个默认语系起作用。
这里写图片描述
接下来学习另外一条路径。

[3]~/.bash_profile

现在开始学习另一条路径上的文件。
在调用顺序图中可以看到,这个文件也是被总的/etc/profile调用的。
这里写图片描述
这个文件的作用是如果~/.bashrc存在,就用sorce加载它;另外在PATH变量后加入了$HOME/bin这个目录(变量的叠加),然后再把这个新的PATH重新声明为环境变量。

也就是说,实际上可以把自己定义的环境变量写到这个流程中的任意一个配置文件中去,只要启动过程是完整的,这个流程正确执行,那么就可以做到持续生效。
这里写图片描述
只要保证对于这个环境变量,后面的文件对前面的没有因覆盖而使前面的更改或定义操作失效即可。

[4]~/.bashrc

它是被刚才的~/.bash_profile调用的。
这里写图片描述
可以看到,这个文件中先是用alias定义了命令别名,所以我们要持久加入的别名可以写到这个文件中来;另外如果/etc/bashrc存在,就用source加载它。

[5]/etc/bashrc

它是被刚才的~/.bashrc调用的。
这里定义了PS1环境变量:
这里写图片描述

如果是没有登录的shell,那么这个文件中定义的PATH生效,从这句注释中可以读出:
这里写图片描述
这也就是上一节讲的,登录过程不正常时,则从这个文件开始加载。

这个文件中只有定义PS1是针对有登录过程的,后面的定义都是针对没有登录过程的,包括重新定义了PS1:
这里写图片描述
从图中还可以看到,这个文件在没有登录过程时调用了/etc/profile.d/下的所有以.sh结尾的文件,这些文件在有登录过程时是由总的/etc/profile文件调用的,这在流程图中就可以看到。

操作系统提示符变成内核自带的提示符

有时候会出现操作系统提示符错乱的情况,从流程图中可以看到PS1环境变量是在/etc/bashrc这个文件中定义的,而正常登陆流程中它前面还有很多文件,如果前面的某个文件丢失了,那么就不会调用这个配置文件,而PS1环境变量也就不会生效。这样开机后操作系统提示符也就变成了Linux内核自带的(在单用户模式中也是它)。
解决方法,找另外一台Linux,把丢失的文件拷贝过来就行了。或者找到它所在的修复的包,从包中解压出来。

阅读全文
0 0
原创粉丝点击