Shell的环境变量配置文件

环境变量配置文件

Linux登录时,所用的环境变量配置文件

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

注:在/etc目录下的环境变量配置文件对所有用户都生效,而在家目录中的环境配置只对指定用户生效

Shell的环境变量配置文件_第1张图片

正常登陆情况下(不是系统启动过程而是输入用户名和密码登录时,或者注销用户重新登录),环境变量配置文件的调用过程:

// 正常登陆时环境变量配置文件的调用过程
/etc/profile
    |
    --/etc/profile.d/*     |
    --/etc/profile.d/lang.sh     |
    --/etc/sysconfig/i18n     |
~/.bash_profile
    |
    --~/.bashrc              |
             --/etc/bashrc                  |
                 --命令提示符  // 通过su方式切换用户的登录时
 /etc/bashrc
     |
     --/etc/profile.d/*.sh      |
     --/etc/profile.d/lang.sh      |
     --/etc/sysconfig/i18n      |
     --命令提示符 //一个普通交互式bash的加载环境变量配置文件过程是:
~/.bashrc
    |
    --/etc/bashrc        |
       --/etc/profile.d/*.sh        |
       --命令提示符

/etc/profile文件

  • USER变量
  • LOGNAME变量
  • MAIL变量
  • PATH变量
  • HOSTNAME变量
  • HISTSIZE变量
  • umask
  • 调用/etc/profile.d/*.sh文件

umask权限

注意:

  1. 文件的最高权限为666
  2. 目录的最高权限为777
  3. 权限不能使用数字进行换算,而必须使用字母
  4. umask定义的权限,是系统默认权限中准备丢弃的权限

具体使用可以参考:umask默认权限

/etc/bashrc

在该配置文件中有PS1提示符环境变量的定义,如果该文件没有被调用则无法显示PS1中定义的提示符信息。
例如:

// linux提示符信息
[root@localhost ~]#
// 变成了下面的情况
bash5.2#

原因:/etc/bashrc中定义了PS1提示符环境变量,它没有被调用

  1. ~/.bashrc 被删除后,就不会调用/etc/bashrc
  2. 单用户模式也不会调用/etc/bashrc

解决:
可以拷贝正常系统中的/etc/bashrc文件

注销时生效的环境变量配置文件

  • ~/.bash_logout
    • 可以在Shell退出时执行一些命令,如清除历史命令history -c
  • ~/.bash_history
    • 当前登录操作命令在退出shell时才保存在~/.bash_history,所以执行history查看历史命令的条数比.bash_history文件中的多

Shell登录信息

本地终端欢迎信息

/etc/issue文件

转移符 作用
\d 显示当前系统日期
\s 显示操作系统名称
\l 显示登录的终端号,比较常用
\m 显示硬件体系结构,如i386、i686
\n 显示主机名
\o 显示域名
\r 显示内核版本
\t 显示当前系统时间
\u 显示当前登录用户的序列号

注:远程终端无法显示登录信息

远程终端欢迎信息

/etc/issue.net文件

  • 转义符在/etc/issue.net文件中不能使用
  • 是否显示此欢迎信息,由ssh的配置文件/etc/ssh/sshd_config决定,加入”Banner /etc/issue.net”行才能显示(必须重启SSH服务)

登录后欢迎信息

/etc/motd文件

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

参考

1.慕课网Linux课程
2. /etc/profile、~/.bash_profile等几个文件的执行过程

你可能感兴趣的:(Shell的环境变量配置文件)