1、source命令

通过source命令可以直接环境变量配置文件。

命令格式如下:

[root@localhost ~]# source 配置文件
或用.
[root@localhost ~]# . 配置文件

提示:

配置完成的环境变量配置文件,是需要用户退出并重新登陆才能生效,并不一定需要重启。

那如果重新登陆觉得很不方便,可以使用source命令和.命令重新加载该配置文件,使其直接生效。

2、Linux系统中环境变量配置文件

(1)登录时生效的环境变量配置文件

在Linux系统登录时,主要生效的环境变量配置文件有以下五个:

  • /etc/profile
  • /etc/profile.d/*.sh
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/bashrc

一类是放在/etc/目录下的环境变量配置文件,一类是放在家目录中的环境变量配置文件。

区别在于放在/etc/目录下的环境变量配置文件中的配置内容是对所有用户生效的,

而放在家目录中的环境变量配置文件中的配置内容只对当前用户生效。

(2)/etc/profile环境变量配置文件

在用户登录过程先调用/etc/profile文件

在这个环境变量配置文件中会定义一些默认环境变量:

  • USER变量:根据登录的用户,给这个变量赋值(就是让USER变量的值是当前用户)。
  • LOGNAME变量:根据USER变量的值,给这个变量赋值。
  • MAIL变量:根据登录的用户,定义用户的邮箱为/var/spool/mail/用户名
  • PATH变量:根据登录用户的UID是否为0,判断PATH变量是否包含/sbin/usr/sbin/usr/local/sbin这三个系统命令目录。

    这里需要注意的是,我们登陆时候看到的PATH环境变量的内容,可能不是上边三个目录,是因为后边加载的环境变量配置文件对PATH环境变量重新赋值了,就覆盖了。
  • HOSTNAME变量:填加主机名,给这个变量赋值。
  • HISTSIZE变量:定义历史命令的保存条数。
  • umask:定义umask默认权限。注意/etc/profile文件中的umask权限是在“有用户登录过程(也就是输入了用户名和密码)”时才会生效。

(3)/etc/profile.d/*.sh环境变量配置文件

/etc/profile文件调用/etc/profile.d/*.sh文件。

也就是/etc/profile文件会调用/etc/profile.d/目录下所有以.sh结尾的文件。这里最常用的就是lang.sh文件,而这个文件又会调用/etc/sysconfig/i18n文件。(/etc/sysconfig/i18n文件就是我们前面讲过的默认语系配置文件)

/etc/profile文件中通过一个for循环调用的/etc/profile.d/*.sh文件,如下:

(4)~/.bash_profile环境变量配置文件

/etc/profile文件调用~/.bash_profile文件(家目录中)。

~/.bash_profile文件就没有那么复杂了,这个文件主要实现了两个功能:

  • 调用~/.bashrc文件(如果有则调用)。
  • 在PATH变量后面叠加了:$HOME/bin这个目录。

    也就是说,如果我们在自己的家目录中建立bin目录,然后把自己的脚本放入~/bin目录,就可以直接执行脚本,而不用通过目录执行了。

(5)~/.bashrc环境变量配置文件

~/.bash_profile文件调用~/.bashrc文件。

~/.bashrc文件中主要实现了:

  • 定义默认别名,把自己定义的别名也放入这个文件。
  • 调用/etc/bashrc文件。

提示:定义别名的时候,定义在/etc/profile~/.bash_profile~/.bashrc/etc/bashrc这个四个配置文件中的哪个文件中都可以,因为他们是一条线,顺序加载的,只要别名的值没有被覆盖。

(6)/etc/bashrc环境变量配置文件

~/.bashrc文件调用了/etc/bashrc文件。

/etc/bashrc文件中主要定义了以下内容:

  • PS1变量:也就是用户的提示符,如果我们想要永久修改提示符,就要在这个文件中修改。
  • umask:定义umask默认权限。

    这个文件中定义的umask是针对“没有登录过程(也就是不需要输入用户名和密码时,比如从一个终端切换到另一个终端,或进入子Shell)"时生效的(非登陆情况下)。

    如果是“有用户登录过程”,则是/etc/profile文件中的umask生效。
  • PATH变量:会给PATH变量追加值,这些值是在“没有登录过程”时才生效的(非登陆情况下)。
  • /etc/profile.d/*.sh文件,这是在“没有用户登录过程”时才调用(非登陆情况下)。

    在“有用户登录过程”时,/etc/profile.d/*.sh文件已经被/etc/profile文件调用过了。

3、环境变量配置文件调用过程

环境变量配置文件调用过程有两个方向:

1)用户正常登陆Linux系统时的环境变量配置文件加载方向。

也就是登陆Linux系统的时候,输入账户密码,正常进行登陆。

/etc/profile文件调用/etc/profile.d/*.sh文件和~/.bash_profile文件。

最终加载/etc/sysc onfig/i18n文件和看到命令提示符。

2)非登陆情况下的环境变量配置文件加载方向。

什么是非登陆状态,比如说我是root用户,通过su命令切换成user1用户。

这个时候是不需要输入用户密码的,直接就可以切换进去。

还有是在父Shell中开启一个子Shell,这种情况下,也不需要输入用户名密码,就可以直接进入子Shell中。

上面这两种情况都属于非登陆情况,user1用户和子Shell中的环境变量配置文件都是这种加载方向。

非登陆情况下环境变量配置文件加载方向是在/etc/bashrc文件开始加载,

加载/etc/profile.d/*.sh文件,之后加载/etc/profile.d/lang.sh,然后加载/etc/sysconfig/i18n文件,最终显示命令提示符。

4、总结

  • 这样这五个环境变量配置文件会被依次调用,那么如果是我们自己定义的环境变量应该放入哪个文件呢?

    如果你的修改是打算对所有用户生效的,那么可以放入/etc/profile环境变量配置文件中;

    如果你的修改只是给自己使用的,那么可以放入~/.bash_profile~/.bashrc这两个配置文件中的任一个。
  • 可是如果我们误删除了这些环境变量,比如删除了/etc/bashrc文件,或删除了~/.bashrc文件,那么这些文件中配置就会失效。

    根据上边的环境变量配置文件加载流程,如果误删除了/etc/bashrc文件,那么命令提示符就无法正常定义和显示了,命令提示符就会显示成简单的bash版本的提示符了-bash-4.1#
  • /etc/目录下的环境变量配置文件,我们一般很少动,但是家目录中的两个配置文件,我们会有很大的几率误删除。

    根据环境变量配置文件加载的顺序,最终都会导致/etc/bashrc文件无法正常加载。

    出现这种现象最直观的现象就是,你看到的命令提示符,变成了一个简易bash的提示符。

    解决方式,找一个其他的系统把这两个文件拷贝回来即可。

『忘了再学』Shell基础 — 22、主要的环境变量配置文件说明的更多相关文章

  1. 『忘了再学』Shell基础 — 23、其他环境变量配置文件

    目录 1.注销时生效的环境变量配置文件 2.其他配置文件 3.Shell登录信息相关文件 (1)/etc/issue文件说明 (2)/etc/issue.net文件说明 (3)/etc/motd文件说 ...

  2. 『忘了再学』Shell基础 — 17、预定义变量

    目录 1.预定义变量$? 2.预定义变量$$和$! 我们之前说过,Shell中的变量不是按照变量值的类型来进行分类的,而是按照Linux系统中定义的变量类别来分类的. 预定义变量就是,事先把变量的名称 ...

  3. 『忘了再学』Shell基础 — 11、变量定义的规则和分类

    目录 1.定义变量的规则 2.变量的分类 1.定义变量的规则 在定义变量时,有一些规则需要遵守 变量名称可以由字母.数字和下划线组成,但是不能以数字开头.如果变量名是2name则是错误的. 在Bash ...

  4. 『忘了再学』Shell基础 — 5、Bash基本功能(命令的别名和常用快捷键)

    目录 1.给命令设置别名 (1)设置别名的命令格式 (2)命令别名永久生效 (3)别名的优先级 2.Bash常用快捷键 1.给命令设置别名 Linux系统的命令别名我们之前已经说过了,这里再过一边. ...

  5. 『忘了再学』Shell基础 — 12、用户自定义变量

    目录 1.变量定义 2.变量调用 3.变量的修改 4.查看变量 (1)-u选项说明: (2)-x选项说明: (3)set命令说明: 5.变量删除 1.变量定义 变量正确定义. 格式:变量名=" ...

  6. 『忘了再学』Shell基础 — 13、环境变量(一)

    目录 1.用户自定义的环境变量 (1)环境变量设置 (2)查询自定义环境变量 (3)删除自定义环境变量 2.系统自带的环境变量--PATH环境变量 (1)PATH环境变量 (2)PATH环境变量的作用 ...

  7. 『忘了再学』Shell基础 — 1、Shell的介绍

    目录 1.Shell的由来 2.Shell的两种执行指令方式 3.什么是Shell脚本 4.Shell 是一种脚本语言 1.Shell的由来 我们比较熟悉Windows系统的图形化界面,对于图形界面来 ...

  8. 『忘了再学』Shell基础 — 4、Bash基本功能(history命令)

    目录 1.history历史命令 2.设置命令历史记录的条数 3.清空历史命令 4.历史命令的调用 5.命令与文件的补全 在Linux系统中默认的Shell就是Bourne-AgainShell(简称 ...

  9. 『忘了再学』Shell基础 — 14、环境变量(二)

    目录 1.PS1变量的作用 2.PS1变量的查看 2.PS1可以支持的选项 3.PS1环境变量的配置 4.总结 提示: 在Linux系统中,环境变量分为两种.一种是用户自定义的环境变量,另一种是系统自 ...

随机推荐

  1. java中throws子句是怎么用的?工作原理是什么

    7.throws子句 马克-to-win:当你的方法里抛出了checked异常,如你不catch,代表你当时不处理(不想处理或没条件处理),但你必须得通过"throws那个异常"告 ...

  2. flex布局控制最后一个元素右浮动

    可以在最后一个元素添加css属性 margin-left: auto; 例如我一排排列的元素 ,子元素并没有完全排列撑开父元素的宽度,这时候要使最后一个元素想最右 可以让最后一个元素的 margin- ...

  3. Mybatis分页查询total中的坑

    写在前面 今天用mybatis进行分页查询,大家应该都用过pageHelper这个插件,但是在计算总的数据数的时候,page.getTotal()总是返回0,要么就是返回pageSize(),今天给大 ...

  4. oracle sqlplus不支持上下键查看历史记录问题

    我们需要安装rlwrap软件 系统采样: [root@rac-2 src]# su - oracle Last login: Fri Mar 18 23:36:25 CST 2022 on pts/0 ...

  5. 安装mysql ndb cluster二进制版本在linux上

    Installing an NDB Cluster Binary Release on Linux (官方安装手册)手册地址:https://dev.mysql.com/doc/refman/5.7/ ...

  6. 记一次mysql请求超时甩锅历程

    今天下午业务找我说是线上环境一个mysql库很慢,请求出现了大量的超时,让帮忙看看,以下为查找过程及甩锅过程. 1. mysql请求超时,ok,我们所有线上mysql都是开启了慢查询日志的,查找慢查询 ...

  7. iNeuOS工业互联网操作系统,三维(3D)模型在线编辑应用和实时数据统计(和值、均值、众数、方差、中位数等)

    目       录 1.      概述... 1 2.      三维(3D)模型在线编辑与应用... 2 3.      实时数据统计... 4 1.   概述 此次,iNeuOS工业互联网操作系 ...

  8. 进阶版css点击按钮动画

    1. html <div class="menu-wrap"> <input type="checkbox" class="togg ...

  9. 【ASP.NET Core】自己编程来生成自签名的服务器证书

    如果项目不大,或者是客户公司内部使用,或者不想花钱购买证书,又或者用于开发阶段测试--完全可以使用自签名证书. 所谓自签,就是自己给自己签名颁发的证书,自给自足,丰衣足食. 生成证书的方法和工具很多, ...

  10. Mysql 计算地址经纬度距离实时位置

    前言 最近在做项目时候,遇到一个这样子的需求, 点到卡包里面卡券使用使用,需要展示卡券使用附近门店, 思路 数据库地址表设计 通用的区域街道地址表tz_sys_area 字段名称 类型 备注 area ...