Shell基础之环境变量配置文件

环境变量配置文件:

  • 环境变量配置文件简介
  • 环境变量配置文件作用
  • 其他配置文件和登录信息

一、环境变量配置文件简介

  • 什么是环境变量配置文件?

环境变量和本地变量的区别是:环境变量可以在一系列的Shell文件中生效,即, 父Shell文件和子Shell文件都可以生效;但是本地变量只能在当前Shell文件中生效

  • Linus中有哪些环境变量配置文件?
  • 环境变量中有系统默认环境变量,这些环境变量的名称和作用都是固定的,我们能做的就是改变它的值。
  • 环境变量允许用户将把自己定义的本地变量,重新声明成环境变量。环境变量可能比本地变量的功能更多一点,限制稍微严格一点。
  • 什么是环境变量的配置文件呢?

在Linux当中用户声明的环境变量重新声明成环境变量,不论是重启或者重新开机,若要永久生效,必须写入对应的环境配置文件。环境变量配置文件是专门放置环境变量的这些文件的,只有写入到这些配置文件当中,这些环境变量才会在每次重启或者重新开机时都会生效。如果我们没有把环境变量的值更改后,写入对应的配置文件,那么只会在当前系统中生效,我们一旦重启捉着注销,这个环境变量就会消失。

1、source命令

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

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

关于source命令的说明:

  • [ source 配置文件 ]命令的作用是:如果修改了环境变量的配置文件,只有退出登录,再重新登录,这个配置文件里面的内容才会生效,也就是说环境变量里的配置文件,需要你重新登录一下它里面的内容才会生效。source命令就是省略了这个登录过程,使当前的这个配置文件直接生效,这样就更加简单的。
  • [ source 配置文件 ]与[ . 配置文件]的作用是一样的。
2、环境变量配置文件简介

环境变量配置文件中主要是定义对系统的操作环境生效的默认环境变量,保存到这个配置文件当中,使定义的环境变量永久生效。比如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量。

关于以上内容的说明:

  • 通过[set]命令查找到了系统默认的这些变量,不包括我们自己定义的变量;
  • 环境变量一般都是大写字母;
  • PATH : 定义系统查找命令的路径,是一冒号分割的一连串路径。通过[echo $PATH]命令可以查看该命令。通过变量叠加的方式可以修该命令,例如:[PATH="$PATH":/root],可以直接把执行文件保存到/root目录下,这样系统就可以直接找到,但是如果这样更改变量,那么下次重启就会消失。如果要想让这个配置文件永久生效,就必须将这条配置放置到对应的环境变量配置文件。
  • HISTSIZE——>历史命令保存条数;
  • PS1——> 提示符;
  • HOSTNAME——>主机名;
2.1> 环境变量配置文件的种类:
  • /etc/profile
  • /etc/profile.d/*.sh ——>代表一组文件,*是通配符。即这个目录下,所有以.sh结尾的文件;
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/bashrc

关于以上环境变量配置文件种类的说明:

  • 在我们用户登录的时候,这五个环境变量的配置文件都会生效。
  • 只要是保存到/etc里面的文件(即:/etc/profile,/etc/profile.d/*.sh,/etc/bashrc),是对所有登录Linux系统的用户都生效。也就是说每个用户登录,都会读取这几个配置文件当中针对环境变量的配置。如果你将自己定义的PATH环境变量改变的值或者变量的定义放在这几个文件当中,任何用户登录的时候PATH都会改变。
  • ~/.bash_profile 和 ~/.bashrc:代表/home 家目录,每个用户都有自己的家目录。当你修改root用户的家目录下的这个文件时,当root用户登录时,当然会读取这个文件,但是当其他用户登录时候,就不会登录这个文件。也就是说着两个文件只对当前用户生效。即你是修改的那个用户下的家目录的这两个配置文件,就对那个用户生效。而且这两个文件是以[ . ] 开头的隐藏文件。

二、环境变量配置文件的作用

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

1、环境变量的基本区别:

  • /etc下的文件,是对任何用户的登录都是生效的。也就是说不管是管理员root,还是普通用户users登录,只要是写在/etc目录下的这几个环境变量当中的,对所有的用户都是一样的,全部都直接生效。
  • “~/.bash_profile”和“ ~/.bashrc”相当于每个用户自己的环境变量配文件。比如,写在root家目录下的文件只对root用户生效,如果写在user1用户家目录下的文件只对user1用户生效。“~”是家目录的意思。
  • /etc下的对所有用户都生效,“ ~ ”家目录下的只对当前用户生效。

注意:只要是保存在/sbin下的这个命令,只有管理员才可以以执行的,普通用户时没有权限执行的。

2、环境变量调用的顺序
在这里插入图片描述
通过以上流程图,来看一下环境变量调用的顺序。环境变量配置文件之间是有优先级的。

用户登录的时候首先读取的是/etc/profile文件,通过这个文件分为两组:一组是调用家目录下的~/.bash_profile文件,另外一组是调用/etc/profile.d/*.sh所有文件;这些文件当中写得任何一个跟用户登录相关的环境变量配置,都会在登录的时候生效。

环境变量默认赋值的时候分两种情况:一种是需要输入用户名和密码,另一种是不需要输用户名密码,这两种方式所读取的文件是不一样的。

首先,看需要用户输入用户名和密码的情况,就是以上这个流程图。当我输入用户名和密码至这个操作符(或提示符)之间这段时间,需要干几件事情。第一步,读取/etc/profile(是我们这几个环境变量配置文件中最复杂的一个)的所有默认的环境变量配置,如" users "、“登录的用户名”、“PATH”等等;第二步,接着读取/etc/profile.d/*.sh下的所有的.sh文件,其中最主要的是调用了/etc/profile.d/lang.sh文件(即,定义系统语言的脚本),第三步是调用/etc/sysconfig/i18n来查看系统所使用的编码形式。

然后,以上都调用完之后,/etc/profile会把它的调用传递给下一个家目录下的~/.bash_profile环境变量配置文件,除了调用这个环境变量之外,会给我的PATH变量在原有的(即,/etc/profile)PATH文件在追加我自己家目录下的HOME/bin(命令为:PATH= P A T H : PATH: PATH:HOME/bin)。这个环境变量完了后,接着调用下一个环境变量~/.bashrc环境变量。

然后,家目录下的~/.bashrc环境变量文件,这个环境变量可以定义系统的别名。也可以将别名定义放在其他的环境变量文件当中,只要是你想让用户登录的同时是这个别名生效,就可以放在以上环境变量配置文件当中的任何一个,只是 ~/.bash_profile和~/.bashrc对当前的用户生效,其他的几个环境变量配置文件对所有用户都生效。(注意:你定义的变量写在这些环境变量的任何一个都可以生效的,只是越后面读取的文件,你定义的这个值它的优先级越高。),为什么我们定义的PATH变量没有覆盖呢,这是因为它不是直接覆盖,而是用的变量的叠加,如,PATH= P A T H : PATH: PATH:HOME/bin,在原始变量的值后面加入新值

注意:你定义的变量写在这些环境变量的任何一个都可以生效的,只是越后面读取的文件,你定义的这个值它的优先级越高。

/etc/profile的作用:

  • USER变量:
  • LOGNAME变量:
  • MAIL变量:
  • PATH变量:
  • HOSTNAME变量:
  • HISTSIZE变量:
  • umask:
    调用/etc/profile.d/*.sh文件

~/.bash_profile的作用:

  • 调用了~/.bashrc文件
  • 在PATH变量后面加入了“ :$HOME/bin”这个目录;

/etc/bashrc的作用:

  • PS1变量
  • umask
  • PATH变量
  • 调用/etc/profile.d/*sh文件

在/etc/bashrc的环境变量文件重新定义一些概念,然后重新调用/etc/profile.d/*.sh文件下目录。但是这种调用只针对’’ non-login shell ‘’,也就是说,不用输用户名和密码的用户生效 。

注意:/etc/profile环境变量文件和/etc/bashrc环境变量文件都定义了“调用/etc/profile.d/*sh文件”,。我们前面已经讲过了登录是分为两种,一种是输入用户名密码,另一种是不输入用户名密码直接切换登录。/etc/bashrc环境变量文件中定义的“调用/etc/profile.d/*sh文件”是不输入用户名和密码直接切换登录,因此它和/etc/profile环境变量文件之间并没有重叠。

三、其他配置文件和登录信息

1、注销时生效的环境变量配置文件
  • ~/.bash_logout

这个文件默认是空的,如果想每次登录时,让系统执行一些清空历史命令或者清空环境变量,都可以将它们写到这个文件当中。写完之后系统注销登录的时候,就会把这个文件执行一次。

2、其他配置文件
  • ~/bash_history
  • 历史命令的保存文件。但是注意,如果我这一次登录现在敲的这些命令,没有直接保存进去,而是先写到内存当中,除非你手工强制性的写进去或者是注销登录,才会将内存中的命令转移到这个文件当中。因此,我们用[history]命令直接去查和[ cat .bash_history ]查到的是不一样的,因为它们之间有些出入,只有等你注销之后才能够写进去。
  • [ ~/bash_history ]文件,当系统出现问题进行排错时,一个重要的查找错误的手段。不推荐清楚这个历史文件。只有当mysql 设置密码时,使用的是明文系统命令,会将这个密码记录在历史文件中,这种情况下非常危险,建议清除这个mysql 设置密码历史命令。
3、Shell登录信息

记录欢迎信息。记录欢迎信息主要由三个文件:

3.1> 标题本地终端欢迎信息:/etc/issue

注意:这个只对本地登录生效

在这里插入图片描述

3.2 > 远程终端欢迎信息:/etc/issue.net
  • **上一个表格中的转义符在/etc/issue.net文件中不能使用,**这个网络的远程登录信息中你能写纯文本信息,不在有/l等这样的转义符使用了;
  • 是否显示此欢迎信息,由ssh的配置文件/etc/ssh/sshd_config决定,加入“ Banner /etc/issue.net ”行才能显示(切记:记得重启SSH服务——>命令格式:services ssh restart);
3.3> 登录后欢迎信息:/etc/motd

不管是本地登录,还是远程登录,都可以显示欢迎信息。

注意:这个是输入用户名和密码后登录的欢迎信息。前面两个是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值