linux /etc/profile $HOME/.bash_profile $HOME/.bashrc $HOME/.bash_login $HOME/.profile文件详解

        在linux系统中,经常与遇到一些环境变量需要配置,比如:Qt、ORACLE、JRE/JDK以及python等环境变量,该怎么去设置呢?这些在网上都能找到答案,但是对与一些初学者,可能比较疑惑,为什么会某一个文件中写,而不是在其他文件中写入呢?今天我们就来简单的理解下:(参考《linux命令行与Shell变成大全》第三版。

        我们先把几个文件列一下,然后一个个来说:

  •         /etc/profile
  •         $HOME/.bash_profile
  •         $HOME/.bashrc
  •         $HOME/.bash_login
  •         $HOME/.profile

        /etc/profile文件是系统上默认的bash shell的主启动文件。系统上的每个用户登录时,都会执行这个启动文件。

        另外4个启动文件时针对用户的,可根据个人需求定制。我们来看下各个文件。

1.、/etc/profile

        /etc/proflie文件是bash shell默认的主启动文件。主要登录了linux系统,bash就会执行/etc/profile启动文件中的命令。不同的linux发行版存放的命令不同。下面我主要已deepin v20.7系统来说明下:

        在终端中输入:cat /etc/profile ,如下图所示:

         可以看到里面涉及的命令和语法很多,这些都不重要,我们主要看红色标注的,发现里面有一个叫/etc/bash.bashrc文件和/etc/profile.d文件夹。这个文件是干啥的呢?我们来看下:

        在终端中输入命令:cat /etc/bash.bashrc,如下图所示:

        这个文件是干啥的呢? 同样是对登录用户的用于配置和命令的使能的。大家有兴趣的话,可以看上面的英文描述,我这边的英文不怎么样,就不拿出来献丑了。

        接着看,还有个目录,这个目录是干啥的?我们进去看看。

        终端中输入:ls -l /etc/profile.d,如下图所示:

         该目录下存放的文件格式基本上都是.sh或csh(c shell)格式的文件,主要是这些脚本文件设置环境变量的。具体每个脚本文件是干啥用的,我这里就不说明了,因为每个发行版本的linux系统,所包含的sh不一样(数量和文件名都不一样)。没发一个个的列举出来解释。仔细看上面的/etc/profile文件中红色标注的部分,采用的for循环来执行该目录下的所有的sh文件,这样做的好处是维护性比/etc/profile文件要好很多,不想要的环境变量或者项增加其他的环境变量,只需要在该目中删除或增加sh或csh脚本就可以了。不用每次都需要改动/etc/profile文件。

        上面是/etc/profile文件的简单介绍。下面需要介绍其他的。

2.$HOME目录下的启动文件,我们这里在列一下吧。

  •         $HOME/.bash_profile
  •         $HOME/.bashrc
  •         $HOME/.bash_login
  •         $HOME/.profile

        这些文件都起着同一个作用:提供用户专属的启动文件来定义该用户所用到的环境变量。注意:大多数linux发行版只用到了这四个启动文件中的一到两个(这个跟系统相关,不一定)。我们来看下deepin系统用到了哪些?

        在终端中输入:cat ~/. 然后按下Tab键,结果如下图所示:

         红色标注的是deepin系统提供的。可能跟我们上面所述的有所出入。多了.bash_logout、.bash_history,不用纠结,有兴趣的话,可以打开这两个文件看下。

 

 

         .bash_history主要是缓存的一些历史指令。这下应该都清楚了吧。接着往下吧。

注意:上面几个文件都是.开头的,说明他们都是隐藏文件(不会在通常的ls命令输出列表中出现)。他们位于用户的HOME目录下,所以每个用户都可以编辑这些文件,并添加自己的环境变量,这写环境变量会在每次启动bash shell会话时生效。

        shell会按照下列顺序,运行第一个被罩的文件,余下的被忽略。

  1.  $HOME/.bash_profile
  2. $HOME/.bahs.login
  3. $HOME/..profile.

注意:这个列表中并没有$HOME/.bashrc文件,这时因为该文件通常通过其他文件运行的。

        我们来看下:

        在终端中输入:cat ~/.bash_profile,发现deepin系统下没有这个文件,换一个,cat ~/.profile ,结果如下图所示:

         $HOME/.profile首先去找$HOME目录下的.bashrc启动文件,如果有的话,会先执行启动文件中的命令。我们来看下.bashrc文件内容:

        终端中输入:cat ~/.bashrc

        里面的内容比较多,如果要增加一些环境变量,也可以在这个文件中末尾处添加。

        总结下:/etc/profile,/etc/bashrc时系统全局变量配置文件,针对所有的用户。而$HOME/.profile,$HOME/.bashrc用户家目录下的环境变量配置文件,针对特定用户。

 

 

        

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值