看懂什么是环境变量
首次接触环境变量是很久以前了,当时,包括后面的一长段时间,都是临时在网页中搜索增加环境变量的方法,一直缺乏一个全面的了解。比如:环境变量到底是什么,有什么作用;环境变量有哪些;不同系统(Mac、Window)如何配置环境变量等。
什么是环境变量?
首先要明白一个概念,就是我们计算机中的操作系统,本质上就是一个巨大的程序。这个程序可能就是 Windows,Linux,Mac 系统中的一种,但是本质都是程序。其他应用程序(JDK、MySQL、Chrome、微信。。。),都在在操作系统内运行的。
环境变量是操作系统中描述运行环境的变量,其本质是操作系统中一个具有特定名字的变量。它包含了一个或者多个应用程序将使用到的信息,可以被操作系统使用,也可以被操作系统内的其他应用程序使用!
有些应用程序在安装完成后,还必需配置环境变量才能正常运行,如:JDK、MySQL等。
环境变量有哪些?
环境变量是一个总称,代表了系统变量和用户变量,一般我们说环境变量都是指这两种。系统变量就是系统级别的变量,可以被系统的所有用户使用。用户变量运行在系统变量之上的,每个用户可以拥有自己独立的变量,这些变量只允许自己使用,与其他用户的用户变量互不干扰。
环境变量的储存文件(Mac)
- 系统环境变量定义文件:
/etc/environment、/etc/profile|/etc/bash_profile)、/etc/bashrc; - 用户环境变量定义文件:
~/.bashrc、~/.profile|~/.bash_profile;
系统环境变量不建议修改 /etc/profile ,因为它只在用户登录才会加载;一般在 /etc/bashrc 中添加,它会在每次 bash shell 执行时加载。
环境变量的加载顺序如下:
- /etc/environment
- /etc/profile
- /etc/bashrc
- /etc/profile.d/test.sh
- ~/.profile
- ~/.bashrc
环境变量的储存文件(Window)
为什么要配置环境变量?
当启动一个应用程序时,无论是点击程序的图标,还是在终端通过命令启动,都是系统先找到程序的安装目录,然后启动程序。
程序的图标包含了应用程序的安装位置信息,点击它们时,系统会按照位置信息找到安装目录,启动程序。而在终端启动时,系统通过以下三种方法定位程序的安装目录,其中,最后一种就跟环境变量有关了:
指定完整的程序文件路径:
/usr/bin/java -version定位到程序的安装目录(系统在当前目录搜索可执行程序):
cd /usr/bin java -version系统根据程序名,自动搜索可执行的程序:
java -version
在配置环境变量前,运行 java -version 是会报错的。因为操作系统并不知道你的 java 程序(文件)在哪里。
PATH是干什么的?
系统变量就是一个大的容器,其中里面有一个环境变量是PATH,PATH主要用于储存各种命令的路径。
当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还会到 PATH变量中指定的路径去找。即,如果可执行程序不在当前目录下,操作系统会自动依次搜索 PATH 变量中所指定的所有目录。
当然,不在 PATH 中设置路径也可执行程序,但必须把完整的路径写出来,如:/usr/bin/java -version。
查看PATH有哪些路径:
echo $PATH
查找使用的指令是PATH的哪个路径:
where java
which java
设置PATH:
/etc/paths 是系统设置的环境变量,修改此文件就可以修改环境变了。但是不建议在此修改,因为这是系统预设的文件,最好不要动。
建议在 /etc/paths.d/ 目录下添加新文件,如:/etc/paths.d/mypath。
或者使用命令行修改:
export PATH=/example/bin:$PATH
# 在 Windows 系统中 PATH 变量中的所有路径采用分号分割,如果在 Linux 系统中采用冒号分割。
如何配置环境变量(Mac)?
Mac系统
查看所有环境变量:
printenv
env
set #显示本地定义的shell变量,包括环境变量
查看单个环境变量,如:PATH:
printenv PATH
echo $PATH
echo ${PATH}
设置新的环境变量(临时):
临时环境变量就是在当前窗口定义,且只能在当前窗口使用的变量。在新开一个窗口(或已开的另一个窗口),这个变量是不存在。
export MY_NEW_VAR="example"
echo $MY_NEW_VAR
设置新的环境变量(永久):
永久环境变量会一直存在文件中,直到被手动删除。
#系统环境变量
vim /etc/profile # 写入
export MY_NEW_VAR="example"
source /etc/profile #立即生效
#用户环境变量
vim ~/.bash_profile
export MY_NEW_VAR="example"
source ~/.bash_profile #立即生效
重新加载文件,让环境变量立即生效(在环境配置完毕后,一般是需要重新登录或重启SHELL才会生效):
source ~/.bash_profile
删除环境变量:
unset MY_NEW_VAR
Window系统
查看所有环境变量:
set
查看单个环境变量,如:PATH:
set PATH
修改环境变量:
set MY_NEW_VAR=example
set PATH=%PATH%;example
删除环境变量:
set PATH=