Shell环境变量配置文件及其分类
还是那句话, 在 Linux 中,修改要想永久生效,必须写入相应的配置文件。 当然,我们自己定义的别名虽然不是系统的默认环境变量,但也是修改操作环境的,如果要想永久生效,则也要放入相应的环境变量配置文件中。
登录时生效的环境变量配置文件在 Linux 系统登录时主要生效的环境变量配置文件有以下 5 个:
这 5 个环境变量配置文件(/etc/profile.d/*.sh 是一系列的配置文件)在用户登录过程中会依次生效。不过需要注意,/etc/profile、/etc/profile_d/*.sh 和 /etc/bashrc 这三个环境变量配置文件会对所有的登录用户生效;而 ~/.bash_profile 和 ~/.bashrc 这两个环境变量配置文件只会对当前用户生效(因为每个用户的家目录中都有这两个文件)。这些环境变量配置文件是依靠如图 1 所示的顺序被调用的。
图 1 环境变量配置文件读取流程
用户登录过程中先调用 /etc/profile 文件。在这个环境变量配置文件中会定义如下默认环境变量。
-PATH 变量:根据登录用户的 UID 是否为 0,判断 PATH 变量是否包含 /sbin、/usr/sbin 和 /usr/local/sbin 这三个系统命令目录。 -HOSTNAME 变量:根据主机名给这个变量赋值。 -HISTSIZE 变量:定义历史命令的保存条数。 -umask:定义 umask 默认权限。注意:/etc/profile 文件中的 umask 权限是在 有用户登录过程(输入了用户名和密码) 时才会生效的。 -调用 /etc/profile.d/*.sh文件,也就是调用 /etc/porfile.d/ 目录下所有以 .sh 结尾的文件。
由 /etc/profile 文件调用 /etc/profile.d/*.sh 文件。该目录中所有以 .sh 结尾的文件都会被 /etc/profile 文件调用,这里最常用的就是 lang.sh 文件,而这个文件又会调用 /etc/sysconfig/i18n 文件。/etc/sysconfig/i18n 就是前面讲过的默认语系配置文件。
由 /etc/profile 文件调用 ~/.bash_profile文件。~/.bash_profile 文件就没有那么复杂了,这个文件主要实现了两个功能:
在 PATH 变量后面加入了 :$HOME/bin 这个目录。也就是说,如果我们在自己的家目录中建立了 bin 目录,然后把自己的脚本放入 ~/bin 目录中,就可以直接执行脚本,而不用通过目录执行了。
由 ~/.bash_profile 文件调用 -/.bashrc 文件。在 -/.bashrc 文件中主要实现了两个功能:
由 ~/.bashrc 文件调用 /etc/bashrc 文件。在 /etc/bashrc 文件中主要定义了如下内容。
umask:定义 umask 默认权限。这个文件中定义的 umask 是针对 没有用户登录过程(不需要输入用户名和密码,比如从一个终端切换到另一个终端,或进入子Shell) 时生效的。如果是 有用户登录过程 ,则 /etc/profile 文件中的 umask 生效。 PATH 变量:会给 PATH 变量追加值,当然也是在 没有用户登陆过程 时才调用的。 调用 /etc/profile.d/*.sh 文件,这也是在 没有用户登录过程 时才调用的。在 有用户登录过程 时,/etc/profile_d/*.sh 文件已经被 /etc/profile 文件调用过了。
这 5 个环境变量配置文件会被依次调用。如果是我们自己定义的环境变量,则应该放入哪个文件呢?如果你的修改是打算对所有用户生效的,那么可以放入 /etc/profile 环境变量配置文件;如果你的修改只是给自己使用的,那么可以放入 ~/.bash_profile 或 -/.bashrc 环境变量配置文件。
但是如果我们误删除了这些环境变量,比如删除了 /etc/bashrc 或 ~/.bashrc 文件,那么这些文件中的配置就会失效(~/.bashrc 文件会调用 /etc/bashrc 文件),我们的提示符就会变成下面这样:
-bash-4.1#
因为在 /etc/bashrc 文件中会设定 PS1 命令提示符,如果这个文件不存在或没有被调用,那么提示符就会是 Bash 最基本的样子。
注销时生效的环境变量配置文件在用户退出登录时,只会调用一个环境变量配置文件,就是 ~/.bash_logout。这个文件默认没有写入任何内容,但是如果我们希望在退出登录时执行一些操作,比如清除历史命令、备份某些数据,就可以把命令写入这个文件。
其他的环境变量配置文件还有一些环境变量配置文件,最常见的就是 ~/bash_history 文件,也就是历史命令保存文件。这个文件已经讲过了,在这里我们只把它归入环境变量配置文件小节而已。
21911.html
golinux相关文章
- Linux学习–>如何通过Shell脚本实现发送邮件通知功能?
- 解决shell脚本中"source /etc/profile"重载配置文件不生效的问题
- Shell条件语句-最佳实践
- Shell脚本的调试和错误处理
- SHELL 中分界符(EOF)的用法详解程序员
- shell获取目录下(包括子目录)所有文件名、路径、文件大小详解程序员
- Shell PATH变量用法详解:系统查找命令的路径
- Shell source命令:使环境变量配置文件强制生效
- 走进Linux世界:命令行与Shell脚本编程指南(linux命令行与shell脚本编程大全)
- 变量Linux查看Shell变量的简易方法(linux查看shell)
- Linux安装Shell快速教程(linux安装shell)
- Linux Shell脚本中单引号(‘)和双引号(“)的区别
- Linux shell脚本使用while循环执行ssh的注意事项
- 进入Linux世界:终端Shell的使用(linux终端shell)
- 命令深入了解Linux,学会常用Shell命令(linux常用shell)
- MySQL的命令行工具MySQL Shell介绍(mysql_shell)
- 最新技术通过Shell连接Redis(shell连接redis)
- VB使用shell函数打开外部exe程序的实现方法