Linux系统中预定义文件的执行顺序和依赖关系

Posted 泡沫o0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统中预定义文件的执行顺序和依赖关系相关的知识,希望对你有一定的参考价值。

前言

当我们登录Linux系统时,系统会按照一定的顺序执行一些预定义的文件,以帮助我们设置环境变量、别名等等。这些文件包括/etc/profile、/.bash_profile、/.bash_login、/.profile、/.bashrc、/etc/bashrc、~/.bash_logout,它们分别有不同的作用域和执行条件,并且可能会因为不同的操作系统、不同的命令解释器和不同的配置而有所不同。在本文中,我们将探讨这些文件的作用和执行顺序,以帮助读者更好地理解Linux系统的登录过程和环境配置。

解释器上的差异

虽然预定义文件在Linux系统中是非常重要的组成部分,但是我们需要注意的是,本文提到的预定义文件主要是针对Bash shell的。
不同的命令解释器和操作系统可能会有不同的预定义文件和执行顺序,因此读者在阅读本文时需要注意这一点。
虽然本文没有涵盖所有命令解释器和操作系统,但我们相信这些内容可以为读者提供重要的参考和帮助。同时,我们鼓励读者在实践中不断探索和学习,并根据自己的需求和环境来进行相应的配置和调整。
不同的命令解释器可能会有不同的规则和执行顺序。ARM平台上的Linux也支持Bash shell,因此如果您在ARM平台上使用Bash shell,则执行顺序可能与上述规则相同。但如果您使用其他的命令解释器,如sh、ksh等,则执行顺序可能会有所不同。因此,在使用不同的系统和解释器时,需要查看相应的文档和配置文件来了解它们的执行规则和执行顺序。

linux配置文件加载顺序

在登录Linux时要执行文件的过程如下:
在刚登录Linux时,首先启动 /etc/profile 文件,
然后再启动用户目录下的 ~/.bash\\_profile ~/.bash\\_login~/.profile文件中的其中一个,
执行的顺序/优先级为:~/.bash\\_profile~/.bash\\_login~/.profile
如果 ~/.bash\\_profile文件存在的话,一般还会执行 ~/.bashrc文件。

因为在 ~/.bash\\_profile文件中一般会有下面的代码:

if \\[ -f \\~/.bashrc \\] ; then

. ./bashrc

fi

~/.bashrc中,一般还会有以下代码:

if \\[ -f /etc/bashrc \\] ; then

. /bashrc

fi

所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会> 执行~/.bash\\_logout文件。

执行顺序为:

/etc/profile -> (\\~/.bash\\_profile | \\~/.bash\\_login | \\~/.profile) -> \\~/.bashrc -> > /etc/bashrc -> \\~/.bash\\_logout

预定义文件

预定义文件是指在Linux系统中预先定义好的一些文件,它们用于在用户登录系统时自动执行一些命令或设置一些环境变量等。
这些文件包括
/etc/profile、/.bash_profile、/.bash_login、/.profile、/.bashrc、/etc/bashrc、~/.bash_logout等,它们分别有不同的作用域和执行条件,并且可能会因为不同的操作系统、不同的命令解释器和不同的配置而有所不同。这些预定义文件的作用是为了帮助用户更方便地使用系统和提高工作效率。

  • (1)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。

  • (2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。

  • (3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

  • (4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

  • (5)/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。

  • (6)/.bash_profile 是交互式、login 方式进入 bash 运行的/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

总结

在Linux系统中,登录过程中预定义的文件起着非常重要的作用,它们可以帮助我们设置环境变量、别名等等,并且可以根据不同的作用域和执行条件来实现不同的功能。在本文中,我们介绍了Linux登录过程中预定义文件的执行顺序,包括/etc/profile、/.bash_profile、/.bash_login、/.profile、/.bashrc、/etc/bashrc、~/.bash_logout等,这些文件分别有不同的作用域和执行条件,可以帮助我们完成不同的任务。同时,我们还介绍了在不同的操作系统、不同的命令解释器和不同的配置下,预定义文件的执行顺序可能会有所不同,因此在不同的环境下,需要查看相应的文档和配置文件来了解具体的情况。总之,了解Linux登录过程中预定义文件的作用和执行顺序,可以让我们更好地配置系统环境,提高工作效率。

以上是关于Linux系统中预定义文件的执行顺序和依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

linux中批处理文件顺序执行命令的输入

华为云技术分享Linux内核模块依赖图绘制

在Linux PC上查看arm交叉编译的可执行文件依赖的动态库

安装程序检查软件包依赖关系的原因是Linux中的许多软件包都依赖于(__)?

CMake基础教程(30)CMake构建系统概览

CMake基础教程(30)CMake构建系统概览