【Linux】【Shell】环境变量配置文件

研究学习 Linux Shell 的系列文章.

这篇文章主要以 CentOS 为例讲环境变量的配置文件.

1. 环境变量配置文件简介

变量类型:

  • 用户自定义变量(本地变量)
  • 环境变量:定义每个用户的操作环境.
  • 预定义变量
    • 位置参数变量

环境变量在命令行中修改只能临时生效,把它写入配置文件才能永久生效. PATH、HISTSIZE、PS1、HOSTNAME 等环境变量写入对应的环境配置文件,在登陆 Shell 时自动加载生效.

source 命令

$ source 配置文件

$ . 配置文件

修改配置文件后,必须注销重新登陆才能生效.
使用 source 命令可以不用重新登陆,立即激活配置文件

环境变量配置文件中主要是定义对系统操作环境生效的系统默认环境变量,如 PATH 等. 不同发行版,配置文件和加载过程有所区别.

CentOS 中登陆时加载的配置文件

  • /etc/profile
  • /etc/profile.d/*.sh
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/bashrc

2. 环境变量配置文件的功能

2.1 环境变量配置文件的加载过程

CentOS 中环境变量配置文件的加载过程可以用下图概括,它有两种方式:
在这里插入图片描述

1. 普通的正常登陆过程
在这里插入图片描述

输入用户名密码后,系统从 /etc/profile 文件开始,先按照路线 1 ◯ \text{\textcircled 1} 1,后按照 2 ◯ \text{\textcircled 2} 2,最终进入命令提示符界面:
在这里插入图片描述

2. 非登陆过程:例如 su 命令
在这里插入图片描述
su 命令切换用户后,系统从 /etc/bashrc 文件开始,先按照路线 1 ◯ \text{\textcircled 1} 1,后按照 2 ◯ \text{\textcircled 2} 2,最终进入命令提示符界面:
在这里插入图片描述

2.2 环境变量配置文件的具体作用

1. /etc/profile 的作用:

  1. 定义环境变量:
    • USER 变量
    • LOGNAME 变量
    • MAIL 变量:
    • PATH 变量:
    • HOSTNAME 变量:
    • HISTSIZE 变量:
  2. umask:
  3. 调用 /etc/profile.d/*.sh 文件

53 行将之前定义的变量声明为环境变量:

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL    # line 53

59行 ~ 63行设置系统默认权限:

# 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 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002 
else
    umask 022 
fi

umask # 查看系统默认权限
 
注意:

  1. 文件最高权限为 666
  2. 目录最高权限为 777
  3. 权限不能使用数字进行换算,而必须使用字母
  4. umask 定义的权限,时系统默认权限中准备丢弃的权限
     
   rw-rw-rw-    # 666
   ----w--w-    # 022
 = rw-r--r--    # 644
   rw-rw-rw-    # 666
   ----wx-wx    # 033
 = rw-r--r--    # 644
   rwxrwxrwx    # 777
   ----w--w-    # 022
 = rwxr-xr-x    # 755

65行 ~ 73行 调用 /etc/profile.d/*.sh 文件

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

unset i
unset -f pathmunge
[user@centos ~]# ls /etc/profile.d/
256term.csh  abrt-console-notification.sh  colorgrep.csh  colorls.csh  csh.local  lang.sh   less.sh   vim.csh  which2.csh
256term.sh   bash_completion.sh            colorgrep.sh   colorls.sh   lang.csh   less.csh  sh.local  vim.sh   which2.sh
[user@centos ~]# cat /etc/locale.conf 
LANG="en_US.UTF-8"

2. ~/.bash_profile 的作用

  • 调用 ~/.bashrc 文件
  • 在 PATH 变量后面加入了 “:$HOME/bin” 这个目录

3. ~/.bashrc 的作用

  • 定义默认别名
  • 调用 /etc/bashrc

4. /etc/bashrc 的作用

  • if PS1 变量不存在,则定义 PS1 变量值:12 行 ~ 49行
  • if not a login shell:51 行 ~ 91行
    • umask
    • PATH 变量
    • 调用 /etc/profile.d/*.sh 文件

在上述配置文件添加自定义环境变量设置均可生效,一般在 ~/.bashrc 文件中修改设置.

2.1 其它的环境变量配置文件

1. ~/.bash_logout的作用
在注销当前 Shell 时调用,默认为空,可自行添加命令,例如清除历史命令:history -c.

2. .bash_history
保存历史命令,与 history 命令有一定差异

3. /etc/issue:本地终端欢迎信息

  • 登陆之前即显示
  • 远程工具不生效
转义符作用
\d显示当前系统日期
\s显示操作系统名称
\l显示登陆的终端号,这个比较常用
\m显示硬件体系结构,如i386、i686等
\n显示主机名
\o显示域名
\r显示内核版本
\t显示当前系统时间
\u显示当前登陆用户的序列号

4. /etc/issue.net:远程终端欢迎信息

  • 登陆之前即显示
  • 转义符在 /etc/issue.net 文件中不能使用
  • 是否显示此欢迎信息,由 ssh的配置文件 /etc/ssh/sshd_config 决定,加入 “Banner /etc/issue.net” (默认123 行) 行才能显示(记得重启 SSH 服务)

5. /etc/motd:终端欢迎信息

  • 登陆后欢迎信息
  • 不管是本地登陆,还是远程登陆,都可以显示此欢迎信息

建议将欢迎信息写在 /etc/motd 中,建议写成警告信息.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值