环境变量
环境变量的一些要点
为什么要使用
总结了一下以往的工作,有以下场景会涉及到环境变量的配置
安装一些软件的时候会涉及到环境变量
比如安装jdk、安装maven,这种情况下我们会将命令所在的路径添加到PATH环境变量中。这样,当我们在终端想要执行某个命令的时候,直接写命令的名字就可以了,而不用带上全路径。
因为,当我们在终端执行某一个命令的时候,操作系统会到PATH环境变量所定义的路径列表中,逐个目录寻找是否存在对应的命令,如果能找到则会执行命令,如果没有找到则会报错,下面演示一下。
首先查看一下系统的PATH环境变量的内容,可以看到PATH地址列表中包含了maven命令的目录/usr/local/apache-maven-3.9.9/bin
[root@master ~]# echo $PATH
/usr/local/apache-maven-3.9.9/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
我们再执行一下mvn命令,可以看到系统找到了mvn命令,并且执行了。
[root@master ~]# mvn -version
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /usr/local/apache-maven-3.9.9
Java version: 1.8.0_412, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.119.1.el7.x86_64", arch: "amd64", family: "unix"
系统遇到mvn这个命令,会获取PATH环境变量对应的值,然后再/usr/local/apache-maven-3.9.9/bin
找到了对应的mvn命令。到/usr/local/apache-maven-3.9.9/bin
下,看一下是否有mvn命令,确实在这里。
我们将maven的路径从PATH中去掉,再试试。修改~/.bashrc文件,将红色区域的两行注释掉
修改完成后,新打开一个终端,再次查看PATH环境变量的值。可以看到maven的目录已经被移除了
[root@master ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
这时,我再执行mvn命令,就会提示找不到命令了
[root@master ~]# mvn -version
bash: mvn: command not found...
在Docker中的应用
创建容器,或者定义Dockerfile的时候涉及到为容器定义环境变量
例如:
FROM centos
# 为容器定义环境变量
ENV name Docker
# 打印名称为name的环境变量
# CMD echo "hello $name"
# 容器启时输出名称为name的环境变量
ENTRYPOINT [ "/bin/bash","-c","echo hello $name" ]
作用域
分为两种,一种使用户变量,另一种使系统变量。用户变量只针对当前登录用户有效,其他用户是看不到也无法使用的;而系统变量是对所有用户都可见,并且能够使用的。
环境变量的引用方式
在windows系统中使用%环境变量名称%的格式,在linux系统中使用$环境变量名称的方式引用。
拼接方式
当环境变量有多个值的时候,需要使用符号分割。
windows系统下使用;分割
Linux系统下使用:分割
如何配置
在实际工作中,开发环境往往使用的是Windows系统,测试和正式环境使用的是Linux系统。这两种场景都会涉及到环境变量的配置,下面分别演示一下配置过程。
Windows系统
以Maven环境变量配置为例
鼠标右键点击此电脑,选择“属性”
点击“高级系统设置”
点击“环境变量”
点击“新建”,创建系统环境变量。变量名为M2_HOME(名称可以随意起,建议使用M2_HOME),变量值就是上一步解压后的目录。
用户变量和系统变量的区别:
1、用户环境变量只对当前登录用户有效,也就是说是当前用户独享的。在A用户下定义的用户变量,B用户登录到系统是看不到的也用不了。
2、系统变量对所有用户都生效,系统的所有用户都能够使用系统变量。
配置完成后,点击确定按钮。返回上一个窗口,然后选择"Path"系统变量,点击“编辑”按钮
在弹出的窗口中,点击“新建”按钮,填入如下内容%M2_HOME%\bin,然后一路确定,直到所有的窗口关闭。
这里的%M2_HOME%是对名称为M2_HOME的环境变量值的引用,%M2_HOME%\bin等价于C:\Program Files\apache-maven-3.6.3\bin
验证环境变量是否配置成功
打开命令窗口,执行echo %M2_HOME%、echo %PATH%,如果能够正确输出我们配置的内容,就说明设置成功了
Linux系统
linux系统有多种方式配置环境变量,逐一给大家介绍一下
export方式
作用域:当前用户
临时改变只能在当前的终端窗口有效,当前窗口关闭后就恢复原有的path配置
执行如下命令:export PATH=/usr/local/mongodb/bin:$PATH
。这行命令的含义是为PATH环境变量追加一个路径/usr/local/mongodb/bin
这种方式适合某次临时与操作系统的交互中使用,比如我们使用Jenkins执行某个job的时候,需要执行一段shell脚本,其中涉及到环境变量的配置,我只希望在这次job执行的过程中使用某个特定的环境变量的值,而不要影响到系统本身的环境,这时就适合使用这种方式。类似下面这种情况
修改.bashrc文件
作用域:当前用户
配置方式:
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
#定义m2_home
export m2_home=/usr/local/apache-maven-3.9.9
#追加到PATH环境变量
export PATH=$m2_home/bin:$PATH
生效方式:新打开一个终端窗口
修改/etc/profile文件
作用域:所有用户
配置方式:同.bashrc
生效方式:执行 source /etc/profile命令
修改~/.bash_profile文件
作用域:当前用户
配置方式:同.bashrc
生效方式:执行 source /etc/profile命令
修改/etc/environmen文件
作用域:所有用户
配置方式:同.bashrc
生效方式:需要重启操作系统
如何验证
可以使用命令在终端打印对应的环境变量,来验证配置是否生效。
windows系统下,使用echo %PATH%;
Linux系统下使用echo $PATH
总结
以上就是环境变量的要点及配置方式,伙伴们可以根据特性选择适合的配置方式,配置完成后要注意别忘了进行生效操作。环境变量是一个比较重要的概念,在以后的开发工作中会经常用到,在此总结一下。