环境变量的配置
bash 的环境变量
source 命令
- 作用:刷新修改过的配置文件,使其生效
例:刷新配置文件
source /etc/profile # 刷新配置文件
. /etc/bashrc # "." 的作用同 source 一样
注:source 可以执行脚本,是在当前 bash 环境加载这个文件 —— 不要这么用
注:“.” 的作用同 source 一样,用于刷新配置
环境变量配置文件,登录系统时生效的环境变量配置文件
- /etc/profile
- ~/.bash_profile
- ~/.bashrc
- /etc/bashrc
文件调用的顺序是
- /etc/profile --》~/.bash_profile --》~/.bashrc --》/etc/bashrc
注:后加载的配置文件可以覆盖前面文件中的内容,并且,调用顺序关系就在文件之中,前面文件丢失后面文件就也不会调用了
先调用 /etc/profile 文件,在这个环境变量配置文件中会定义这些默认环境变量
- USER 变量:根据登录的用户,给这个变量赋值 —— 就是让 USER 变量的值保存当前用户名
- LOGNAME 变量:根据 USER 变量的值,给这个变量赋值
- MAIL 变量:根据登录的用户,定义用户的邮箱为 /var/spool/mail/用户名
- PATH 变量:根据登录用户的身份,决定 PATH 变量是否包含专属目录(/root/sh)
- HOSTNAME 变量:更改主机名,给这个变量赋值
- HISTSIZE 变量:定义历史命令的保存条数
在 ~/.bash_profile 文件主要实现了两个功能
-
在 PATH 变量后面加入了 “:$HOME/bin” 这个目录 —— 做了变量的叠加
-
调用了 ~/.bashrc 文件
# Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc # 加载,调用 ~/.bashrc 文件 fi
如果我们在自己的家目录中建立 bin 目录,然后将脚本放入,就可以直接执行脚本,而不用通过路径
在 ~/.bashrc 文件中主要实现
-
定义默认别名,所以我们把自己定义的别名也放入了这个文件
-
调用 /etc/bashrc
# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc # 调用 /etc/bashrc fi # User specific environmnet if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]] then PATH="$HOME/.local/bin:$HOME/bin $PATH" # 变量叠加 fi exprot PATH
在 /etc/bashrc 文件中主要定义了这些内容
-
PS1 变量:也就是用户的提示符
- 如果我们想要永久修改提示符,就要在这个文件中修改
-
umask:定义 umask 默认权限。
- 这个文件中定义的 umask 是针对 “没有登录过程” 时生效的
- 如果是 “有用户登录过程” 则是 /etc/profile 中的 umask 生效
- 有没有 “登录过程” 指用户是否输入过密码
-
PATH 变量:会给 PATH 变量追加值,当然也是在 “没有登录过程” 时才生效
-
调用 /etc/profile.d/*.sh 文件
for i in /etc/profile.d/*.sh; do #依次调用 /etc/profile 中所有的脚本 if [ -r "$i" ]; then #判断是否脚本可读 if [ "$PS1" ]; then #是否有值 . "$i" #加载,调用 else . "$i" >/dev/null #否则,放弃 fi fi done
注:文件调用顺序是 /etc/profile --》~/.bash_profile --》~/.bashrc --》/etc/bashrc
其中:~/.bash_profile 调用 /.bashrc,/.bashrc 再调用 /etc/bashrc —— 中间的文件丢失后面文件就不能加载了
注销专用环境变量配置文件
- 在用户退出登录时,只会调用一个环境变量配置文件,就是 ~/.bash_logout
- 这个文件默认没有写入任何内容,可是如果我们希望退出登录时执行一些操作
- 比如清除历史命令,备份某些数据,就可以把命令写入这个文件
- ~./bash_logout —— 检查用户在退出当前用户身份时要进行的操作
例:让每次退出时,自动备份 /root/ 下所有文件
#~/.bash_logout
rm -rf /root_bak/* # 备份之前删除原有备份
cp -af /root/* /root_bak # -a 保留元数据信息,-f 强制