环境变量配置文件的作用

先用一个流程图看下环境变量调用的顺序

当系统启动时,系统就会顺序读取上面配置文件的中的值赋给环境变量PATH

在登录时有两种情况,一种是输入用户名和密码登录,另一种是在系统中切换shell(这种情况不需要输入用户名和密码)
这两种情况读取的配置文件是不同的,第一种读取的是/etc/profile 第二种情况读取的是 /etc/bashrc

/etc/prifile文件的作用:
USER变量
LOGINNAME变量
MAIL变量
PATH变量
HOSTNAME变量
HISTSIZE变量
umask:
调用/etc/profile.d/*.sh文件

下面是/etc/profile文件的内容:

pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}
if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`id -u`
        UID=`id -ru`
    fi
    USER="`id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi
# Path manipulation
if [ "$EUID" = "0" ]; then
    pathmunge /sbin
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
    pathmunge /sbin after
fi
HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 002
else
    umask 022
fi
for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null 2>&1
        fi
    fi
done
unset i
unset -f pathmunge
export TERM=xterm-color

下面是/etc/profile.d目录下的.sh文件

这里我们主要看lang.sh文件,它主要定义了系统的语言

它调用了/etc/sysconfig下的.i18n文件

很简单。

读完/etc/profile文件后,会把调用传递给下一个环境变量配置文件~/.bash_profile

查看./.bash_profile文件

可以看到在PATH环境变量后追加一个家目录下的/bin目录。
这说明用户查找命令时会在/bin目录下查找。

下面查看~/.bashrc文件

这里面定义了别名。

我们想要更改环境变量,可以把配置写入任何一个配置文件当中,但注意的是:越靠后的配置会覆盖前面的配置(要想不覆盖可以以追加的方式去写入)

/etc/bashrc的作用

  • ps1变量
  • umask
  • PATH变量

调用/etc/profile.d/*.sh文件