Linux(入门基础):60---系统重要的配置文件(/etc/profile、~/.profile、~/.bashrc),source命令

时间:2024-03-22 14:25:51

一、login  shell与non-login  shell

介绍配置文件之前,介绍一下这两个概念

  • login  shell:登录bash需要完整的登录流程,成为login  shell。例如:当你登录一个终端时,需要登录用户名与密码。此bash称为login  shell
  • non-login  shell:假设你以X Window登录Linux后,再以X的图形化接口启动终端,此时这个终端接口并没有需要再次的输入账号密码,该bash就称为non-login  shell。你在这个bash环境下输入bash进入一个子进程,这个子进程也是一个non-login shell

注意:login  shell和non-login shell开启一个bash时,会读的配置文件也会不同

二、配置文件分类

1.分类

配置文件根据设置,可以分为两种类型

  • ①系统配置文件:这是系统整体的配置文件,最好不要修改
  • ②用户个人配置文件:属于用户个人的配置,不同用户的配置文件也不同。如果想要修改自己的数据,可以修改这种类型的文件

2.相关配置文件

  • /etc/profile:系统配置文件。只有login  shell才会读取
  • ~/.bash_profile或~/.bash_login或~/.profile:用户个人配置文件。只有login  shell才会读取
  • ~/.bashrc:non-login  shell才会读取

3.注意事项

  • bash登录时先读取系统配置文件之后,就会读取用户个人配置文件
  • 不同的用户,用户的这些配置文件都不同

三、/etc/profile:系统配置文件

1.功能

  • 这个配置文件可以利用用户标识符(UID)来决定很多重要的变量数据,这也是每个用户登录bash一定会读取的配置文件

2.注意事项

  • 只有login  shell才会读取
  • login shell登录bash时读取的整体环境配置文件其实只有/etc/profile,其他配置文件都是由/etc/profile文件调用的

3.包含的内容与会调用的文件

下面只是一些部分内容,并没有完全列出来

  • PATH:会根据UID决定PATH变量要不要包含sbin的系统命令目录
  • MAIL:根据账号设置好用户的mailbox到/var/spool/mail/账号名
  • USER:根据用户的账号设置此变量内容
  • HOSTNAME:根据主机的hostname命令决定此变量内容
  • HISTSIZE:历史命令记录条数
  • umask:包括root默认的022,而一般用户为002等
  • /etc/profile.d/*.sh文件:这个目录内的.sh文件需要具有r的权限,那么这些文件就会被/etc/profile调用。一般这些.sh文件规范了bash操作界面的颜色、语系、命令的别名等。如果一些用户想要设置一些共享的命令别名,可以在这个目录下自行建立扩展名为.sh的文件并将所需数据写入其中
  • /etc/locale.conf文件:这个文件是由/etc/profile.d/lang.sh文件调用的(/etc/profile间接调用),这也是我们决定bash默认使用何种语系的重要配置文件。文件中重要的变量为LANG/LC_ALL等
  • /usr/share/bash-completion/completions/*文件:这个目录下的文件是由/etc/profile.d/bash_completion.sh文件调用的。这个文件中包含了一些重要命令,这些重要命令可以让我们使用[tab]键进行命令补齐、文件名补齐、命令的参数/选项补齐等功能

四、~/.bash_profile、~/.bash_login、~/.profile:用户配置文件

1.功能

  • 这几个配置文件,都是用户个人的配置信息文件

2.注意事项

  • login shell才会读取
  • 事实上:这三个文件不一定都存在,并且bash只会读取三个文件中的一个,读取到一个之后就不会读取另外文件。读取的顺序是~/.bash_profile==>~/.bash_login==>~/.profile。

我的系统中只有~/.profile文件,没有前面那两个文件

3.~/.profile包含的内容与会调用的文件

  • .bashrc文件:可以看到有个if语句判断是否有.bashrc文件,如果有就调用这个文件
  • PATH变量:由于PATH环境变量在/etc/profile里面已经设置过了,这里又以累加的方式将自己的家目录下的/bin目录到环境变量中,这样自己家目录/bin下的文件或者程序就可以直接输入命令来执行,不需要再输入绝对路径来执行

Linux(入门基础):60---系统重要的配置文件(/etc/profile、~/.profile、~/.bashrc),source命令

五、~/.bashrc文件

1.概念

  • 当你以non-login  shell这种非登录情况取得bash操作界面时,此bash读取的配置文件就是这个文件

2.注意事项

  • 此bash只读取这个文件,不会读取其他文件。因为以non-login  shell登录
  • 不同用户登录,此文件的数据也不同

3.~/.bashrc文件包含的内容与会调用的文件

  • 会调用很多其他文件
  • 还有很多变量设置、以及用户其他的设置

六、其他相关配置文件

1./etc/man_db.conf文件

  • 这个文件有的系统可能存在,有的系统可能不存在
  • 功能:记录了说明文件的路径。当我们输入man命令时,man page回去哪里寻找说明文件
  • 什么时候修改这个文件哪?例如当我们安装一个软件时,你这个软件的man page文件可能是/usr/local/软件名称/man,那么你需要将这个说明文件的路径加到/etc/man_db.conf中去,否则使用man命令查询不到该软件的说明信息,除非使用绝对路径

2.~/.bash_history文件

  • 这个文件前面介绍过。记录了我们输入的历史命令
  • 这个文件能记录多少条历史记录,与HISTFILESIZE这个变量有关

Linux(入门基础):60---系统重要的配置文件(/etc/profile、~/.profile、~/.bashrc),source命令

3.~/.bash_logout文件

  • 功能:这个文件记录了一些操作与功能:当我注销bash后,系统帮我做个哪些事情
  • 从下图中可以看中,当我注销时,bash只是帮我们清掉屏幕信息而已
  • 如果可以,我们可以将一些备份或者其他重要的任务写在这个文件中(例如清空缓存),当你bash后,这些任务就会自动执行

Linux(入门基础):60---系统重要的配置文件(/etc/profile、~/.profile、~/.bashrc),source命令

七、source命令

1.功能

  • 更新环境配置文件
  • 应用场景:当你修改你的配置文件之后,需要注销再登录,配置文件新内容才会生效。如果使用source命令,则在此次登录中更新就可以使用更新之后的配置文件,不需要再注销重新登录

2.格式

下面这两种命令都是可以的

  • source   配置文件名
  • .   配置文件名