环境变量配置文件
Linux登录时,所用的环境变量配置文件
- /etc/profile
- /etc/profile.d/*.sh
- ~/.bash_profile
- ~/.bashrc
- /etc/bashrc
注:在/etc目录下的环境变量配置文件对所有用户都生效,而在家目录中的环境配置只对指定用户生效
正常登陆情况下(不是系统启动过程而是输入用户名和密码登录时,或者注销用户重新登录),环境变量配置文件的调用过程:
// 正常登陆时环境变量配置文件的调用过程
/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权限
注意:
- 文件的最高权限为666
- 目录的最高权限为777
- 权限不能使用数字进行换算,而必须使用字母
- umask定义的权限,是系统默认权限中准备丢弃的权限
具体使用可以参考:umask默认权限
/etc/bashrc
在该配置文件中有PS1提示符环境变量的定义,如果该文件没有被调用则无法显示PS1中定义的提示符信息。
例如:
// linux提示符信息
[root@localhost ~]#
// 变成了下面的情况
bash5.2#
原因:/etc/bashrc中定义了PS1提示符环境变量,它没有被调用
- ~/.bashrc 被删除后,就不会调用/etc/bashrc
- 单用户模式也不会调用/etc/bashrc
解决:
可以拷贝正常系统中的/etc/bashrc文件
注销时生效的环境变量配置文件
- ~/.bash_logout
- 可以在Shell退出时执行一些命令,如清除历史命令
history -c
,
- 可以在Shell退出时执行一些命令,如清除历史命令
- ~/.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等几个文件的执行过程