Linux环境变量文件及加载过程

一、系统环境变量:

系统环境变量相关文件包括:/etc/profile 、 /etc/profile.d/*.sh 、 /etc/bashrc
(1)/etc/profile :这个文件预设了几个重要的变量,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umask等等。从安全角度考虑,通常不会在此文件中进行环境变量设置。
/etc/profile文件中有执行/etc/profile.d目录下脚本的代码,因此一般在/etc/profile.d目录下,通过shell脚本,设置系统环境变量:

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

(2)/etc/profile/*.sh:设置系统环境变量,如my_env.sh

# JAVA_HOME
JAVA_HOME=/opt/module/jdk1.8.0_212
#HADOOP_HOME
HADOOP_HOME=/opt/module/hadoop-3.1.3
#ZOOKEEPER_HOME
ZOOKEEPER_HOME=/opt/module/zookeeper-3.5.7
#KAFKA_HOME
KAFKA_HOME=/opt/module/kafka

PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin
export PATH JAVA_HOME HADOOP_HOME ZOOKEEPER_HOME KAFKA_HOME

(3)/etc/bashrc :这个文件主要预设umask以及PS1。这个PS1就是我们在敲命令时,前面那串字符了,例如 [root@localhost ~]#,当bash shell被打开时,该文件被读取。改文件读取时,会执行/etc/profile.d/*.sh脚本

    for i in /etc/profile.d/*.sh; do
        if [ -r "$i" ]; then
            if [ "$PS1" ]; then
                . "$i"
            else
                . "$i" >/dev/null
            fi
        fi
    done

二、用户环境变量:

用户环境变量相关文件包括:~/.bash_profile 、 ~/.bashrc 、 ~/.bash_history 、 ~/.bash_logout
(1).bash_profile :定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。(在这个文件中有执行.bashrc的脚本)

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

(2).bashrc :该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如你可以将用户自定义的alias或者自定义变量写到这个文件中。/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系。此外,在用户目录下的.bashrc有执行/etc/bashrc的脚本。

if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

(3).bash_history :记录命令历史用的。
(4).bash_logout :当退出shell时,会执行该文件。可以把一些清理的工作放到这个文件中。

三、启动过程
(1)正常登录配置文件顺序加载过程,所谓正常登录指用户通过输入用户名和密码登录的状态(包括ssh登录,su - 切换用户)。
login shell,会导致系统文件/etc/profile,/etc/bashrc,用户文件.bash_profile和.bashrc加载。

在这里插入图片描述
ssh远程账户密码登录:

[jl@hadoop103 ~]$ ssh hadoop102
Last login: Sun May 17 08:25:39 2020 from 192.168.238.1
/etc/profile start
/etc/profile.d/my_env start
/etc/profile.d/my_env end
/etc/profile end
~/.bash_profile start
~/.bashrc start
/etc/bashrc start
/etc/bashrc end
~/.bashrc end
~/.bash_profile end

(2)非登录式文件加载过程,如执行/bin/bash和su切换用户
nologin shell,只会加载系统文件/etc/bashrc和用户文件.bashrc。
在这里插入图片描述
执行/bin/bash:

[jl@hadoop102 ~]$ /bin/bash
~/.bashrc start
/etc/bashrc start
/etc/profile.d/my_env start
/etc/profile.d/my_env end
/etc/bashrc end
~/.bashrc end

执行su切换用户:

[root@hadoop102 jl]# su jl
~/.bashrc start
/etc/bashrc start
/etc/profile.d/my_env start
/etc/profile.d/my_env end
/etc/bashrc end
~/.bashrc end

四、用户退出
用户退出,会直接加载用户文件.bash_history和.bash_logout。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值