首页 > 编程笔记

Linux(Shell)环境变量配置文件有哪些?

在 Linux 系统中,环境变量可以分为系统级环境变量用户级环境变量两种: 因此,环境变量的配置文件也被分成了系统级和用户级两种。

Linux系统级环境变量配置文件

1) /etc/profile文件

当用户登录 Linux 系统即 Login Shell 启动时,首先需要执行的启动脚本就是 /etc/profile 文件。

注意,只有在 Login Shell 启动时才会运行 /etc/profile 脚本文件,Non-login Shell 则不会调用这个脚本文件。

一些比较重要的变量都是在此脚本文件中设置,例如:

注意,在 /etc/profile 文件中设置的变量是全局变量。

本教程中所使用的 Linux 系统上,/etc/profile 文件中的部分系统环境变量如下所示:

[root@bogon ~]# cat /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}
......

在该文件中可以执行的操作如下:
  1. 添加环境变量。可以在profile文件的最后直接添加环境变量,但在profile文件添加或修改的内容需要注销系统才能生效。
  2. 重复定义变量。在peofile文件中默认对PATH变量都有设置,而新添加的环境变量一般都会加在profile文件的最后,因此相同名字的环境变量,后添加的最先起到作用。
  3. 特殊字符。“:”表示并列含义,例如a的变量值有多个,可以使用“:”符号进行分隔。“.”表示操作的当前目录。
  4. 使用 env 命令显示所有的环境变量。在Linux系统中,使用以下命令可以使配置文件立刻生效。

[root@bogon ~]# source /etc/profile
[root@bogon ~]# echo $PATH

2) /etc/bashrc文件

/etc/bashrc 为每一个运行 Bash Shell 的用户执行此文件。当 Bash Shell 被打开时,该文件将被读取。Bash Shell 有不同的类别,不同的类别所使用的环境变量配置文件也有所不同。

一般情况下,非登录 Shell 不会执行任何 profile 文件,非交互 Shell 模式不会执行任何 bashrc 文件:

3)/etc/environment文件

在系统启动时运行,用于配置与系统运行相关但与用户无关的环境变量,修改该文件配置的环境变量将影响全局。

Linux用户级环境变量配置文件

1)~/.bash_profile文件

~/.bash_profile 文件:每个用户都可使用该文件输入只限于自己使用的 Shell 信息,当用户登录时,该文件仅仅执行一次。默认情况下,该文件中可以设置一些环境变量,执行用户的 .bashrc 文件。

在 Linux 系统中的 ~/.bash_profile 文件的内容,也可以通过 cat 命令查看,感兴趣的读者可自行查看。

2)~/.bashrc文件

该文件包含专用于用户的 Bash Shell 的 Bash 信息,当登录以及每次打开新的 Shell 时,该文件将被读取。

3)~/.profile文件

在 ~/.profile 文件中可以设定用户专有的路径、环境变量等,它只在登录的时候执行一次。

4)~/.bash_logout

当每次退出系统(退出 Bash Shell)时,执行该文件。另外,/etc/profile 中设定的全局变量可以作用于任何用户,而 ~/.bashrc 等中设定的局部变量只能继承 /etc/profile 中的变量,他们属于“父子”关系。

注意,~/.bash_profile 是交互式、login 方式进入 Bash 运行的;~/.bashrc 是交互式、non-login 方式进入 Bash 运行。通常二者设置大致相同,所以通常前者会调用后者。

在登录 Linux 时要执行文件的过程为:登录 Linux 时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、~/.bash_login 或 ~/.profile 文件中的其中一个。如果 ~/.bash_profile 文件存在的话,一般还会执行 ~/.bashrc 文件。

优秀文章