【前端&运维那点事儿】七:迈向Shell的第三步:环境变量与配置文件

1,057 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

Hi~,我是一碗周,如果写的文章有幸可以得到你的青睐,万分有幸~

🍐 写在前面

先来介绍一下新开的这个专栏:《前端&运维那点事儿》将会从前端的角度,依次学习Linux→Nginx→Docker→持续集成→k8s,从而打造一个属于站在前端角度的运维专栏。

这篇文章我们来介绍一下Linux中的环境变量以及和环境变量相关的配置文件

🍇 环境变量

环境变量可以理解为Linux中的全局变量,这是因为环境变量可以在当前Shell中及其子Shell中都可以访问,环境变量主要保存的是和当前操作系统环境相关的数据,这些变量能够保障Linux系统能够正常运行并且为用户提供服务。

🍈 export命令

export命令的功能是用于将变量提升成环境变量,也可以将Shell中的函数输出为环境变量。

该命令有常用的参数有3个,如下:

  • -f:指定函数名称
  • -n:删除指定的变量
  • -p:列除所有环境变量

示例代码如下:

[root@ywanzhou ~]$ export MY_NAME=一碗周         # 定义环境变量
[root@ywanzhou ~]$ export -p | grep 'MY_NAME'   # 查看环境变量
declare -x MY_NAME="一碗周"                      
[root@ywanzhou ~]$ export -n MY_NAME            # 删除环境变量
[root@ywanzhou ~]$ export -p | grep 'MY_NAME'

实际上Linux中的环境变量都是使用export命令定义的,这些环境变量在进入系统就可以直接访问的原因是因为Linux中有很多环境变量的配置文件,在进入系统时会根据固定的顺序去执行一些配置文件,而那些环境变量就是这些配置文件中生成的。

🍇 env命令

export命令外,我们也可以使用env命令来查看系统中的环境变量。例子如下:

[root@ywanzhou ~]# env | grep 'HOST'
HOSTNAME=ywanzhou
PROMPT_COMMAND=history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
[root@ywanzhou ~]# 

🍉 一些常用的环境变量

🍊 PATH

PATH中存在的时一些路径,这些路径就是我们平常使用的lscp这些命令的存放位置,如果我们自己编写的命令可以直接执行,而不是使用绝对路径的方式,可以直接将这个命令放到PATH中的任意目录,或者修改PATH,将命令的目录添加到PATH中。

示例如下:

[root@ywanzhou ~]$ cd ~                         # 回家
[root@ywanzhou ~]$ mkdir shell                  # 创建一个存放shell的目录
[root@ywanzhou ~]$ vim shell/hello.sh           # 创建一个hello.sh并写入下面这段内容
[root@ywanzhou ~]$ chmod 755 shell/hello.sh     # 给该shell可执行权限
[root@ywanzhou ~]$ ./shell/hello.sh             # 通过路径的方式执行该脚本
hello
[root@ywanzhou ~]$ export PATH="$PATH":/root/shell   # 添加目录,该方式临时生效
[root@ywanzhou ~]$ hello.sh                     # 执行可以执行
hello

hello.sh的内容如下:

#!/bin/bash
echo hello

如果想要永久生效需要修改配置文件

🍋PS1

PS1存储的是命令行提示符前面的那段信息,如下所示:

[root@ywanzhou ~]$ echo $PS1
[\u@\h \W]$

可以替换的内容如下所示:

变量提示符
\d显示日期,格式为"星期 月 日"
\H完整的主机名
\t24小时制时间,格式为 "HH:MM:SS"
\A24小时制时间,格式为 "HH:MM"
\u显示当前用户名
\w显示所在目录完整名称
\W显示所在目录的最后一个目录
$提示符,root为#,普通用户为$

🍌 语系环境变量

首先我们先了解一下locale命令,该命令可以查看当前系统的使用的语言,还可以查看系统内支持的所有语言,示例如下:

[root@ywanzhou ~]$ locale -a
# ...
zh_CN.utf8
#...
[root@ywanzhou ~]$ locale
LANG=zh_CN.utf8
#...

locale的命名规则为<语言>_<地区>.<字符集编码>,如zh_CN.utf8zh代表中文,CN代表大陆地区,utf8表示字符集。

可以通过LANG=的方式修改当前语言,不过这也是临时生效,如果想要永久生效需要修改环境变量配置文件。

🍍 环境变量配置文件

Linux中的环境变量配置文件的执行顺序如下图所示:

进入系统配置文件执行过程.png

使用su命令切换用户配置文件执行顺序如下:

su切换用户配置文件执行过程.png

除了上图中的常用的配置文件之外,还有如下文件比较常用:

  • ~/.bash_logout:注销时生效的环境变量配置文件
  • ~/.bash_history:当正确退出计算机的时候会历史记录会写入文件

根据配置文件的执行顺序,可以选择文件去写入或者更新我们的环境变量

注意:修改完配置文件后,必须注销重新登录才能生效,使用source命令可以不用重新登录,使修改后的配置立即生效,例如:

source ~/.bashrc
# 或者
. ~/.bashrc

🥭 写在最后

本篇文章到这就结束了,这篇文章中介绍了Linux中的环境变量,以及和环境变量有关的配置文件。

如果对本篇文章对你有所帮助,可以点赞收藏评论支持一下我;如果有所疑问,欢迎私信~