一、概述
环境变量是操作系统用来指定运行环境的一些参数。比如临时文件夹位置和系统文件夹位置等。当你运行某些程序时,除了在当前文件夹中寻找外,还会到这些环境变量中去查找,比如“Path”就是一个变量,里面存储了一些常用的命令所存放的目录路径。
当启动cmd命令行窗口调用某一命令的时候,经常会出现“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”,如果你的拼写没有错误,同时计算机中确实存在这个程序,那么出现这个提示就是你的path变量没有设置正确,因为你的path路径,也就是默认路径里没有你的程序,同时你有没有给出你程序的绝对路径(因为你只是输入了命令或程序的名称而已),这是操作系统不知道去哪儿找你的程序,就会提示这个问题。
二、查看环境变量
可视化查看环境变量
路径: 控制面板\系统和安全\系统\高级系统设置\高级\环境变量...
:
使用命令查看环境变量
使用 set
命令可以输出所有环境变量:
C:\WINDOWS\system32>set
ALLUSERSPROFILE=C:\ProgramData
ANDROID_HOME=D:\Program Files\android-sdk
ANDROID_SDK_ROOT=D:\Program Files\android-sdk
APPDATA=C:\Users\quanzaiyu\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=DESKTOP-T1071CD
ComSpec=C:\WINDOWS\system32\cmd.exe
DriverData=C:\Windows\System32\Drivers\DriverData
GITLAB_HOME=D:\Users\quanzaiyu\.docker\datas\gitlab
GRADLE_HOME=D:\Program Files\gradle\gradle-6.3
GRADLE_USER_HOME=D:\Users\quanzaiyu\.gradle
HOMEDRIVE=C:
HOMEPATH=\Users\quanzaiyu
JAVA_HOME=D:\Program Files\openjdk\jdk-15
JENKINS_HOME=D:\Users\quanzaiyu\.docker\datas\jenkins
LOCALAPPDATA=C:\Users\quanzaiyu\AppData\Local
LOGONSERVER=\\DESKTOP-T1071CD
M2_HOME=D:\Program Files\maven\apache-maven-3.6.0
MAVEN_HOME=D:\Program Files\maven\apache-maven-3.6.0
NUMBER_OF_PROCESSORS=12
OneDrive=E:\OneDrive
OneDriveConsumer=E:\OneDrive
OS=Windows_NT
Path=C:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\Program Files (x86)\NetSarang\Xshell 7\;C:\ProgramData\Miniconda3;C:\ProgramData\Miniconda3\Library\mingw-w64\bin;C:\ProgramData\Miniconda3\Library\usr\bin;C:\ProgramData\Miniconda3\Library\bin;C:\ProgramData\Miniconda3\Scripts;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\Program Files (x86)\Yarn\bin\;C:\Program Files\Git\cmd;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Users\quanzaiyu\AppData\Local\Microsoft\WindowsApps;C:\Users\quanzaiyu\AppData\Roaming\npm;C:\Users\quanzaiyu\AppData\Local\Yarn\bin;C:\Users\quanzaiyu\AppData\Local\Programs\Microsoft VS Code\bin;C:\Program Files\Bandizip\;D:\Program Files\gradle\gradle-6.3\bin;D:\Program Files\openjdk\jdk-15\bin;D:\Program Files\android-sdk\tools;D:\Program Files\android-sdk\platform-tools;D:\Program Files\maven\apache-maven-3.6.0\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 10, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=9e0a
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\Users\QUANZA~1\AppData\Local\Temp
TMP=C:\Users\QUANZA~1\AppData\Local\Temp
USERDOMAIN=DESKTOP-T1071CD
USERDOMAIN_ROAMINGPROFILE=DESKTOP-T1071CD
USERNAME=quanzaiyu
USERPROFILE=C:\Users\quanzaiyu
windir=C:\WINDOWS
WSLENV=WT_SESSION::WT_PROFILE_ID
WT_PROFILE_ID={0caa0dad-35be-5f56-a8ff-afceeeaa6101}
WT_SESSION=2ef0c529-ef53-42bf-aff2-2355697f57fa
在 set
后跟上环境变量名,可以只查看指定环境变量:
C:\WINDOWS\system32>set path
Path=C:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\Program Files (x86)\NetSarang\Xshell 7\;C:\ProgramData\Miniconda3;C:\ProgramData\Miniconda3\Library\mingw-w64\bin;C:\ProgramData\Miniconda3\Library\usr\bin;C:\ProgramData\Miniconda3\Library\bin;C:\ProgramData\Miniconda3\Scripts;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\Program Files (x86)\Yarn\bin\;C:\Program Files\Git\cmd;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Users\quanzaiyu\AppData\Local\Microsoft\WindowsApps;C:\Users\quanzaiyu\AppData\Roaming\npm;C:\Users\quanzaiyu\AppData\Local\Yarn\bin;C:\Users\quanzaiyu\AppData\Local\Programs\Microsoft VS Code\bin;C:\Program Files\Bandizip\;D:\Program Files\gradle\gradle-6.3\bin;D:\Program Files\openjdk\jdk-15\bin;D:\Program Files\android-sdk\tools;D:\Program Files\android-sdk\platform-tools;D:\Program Files\maven\apache-maven-3.6.0\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
三、设置环境变量
可视化设置环境变量
直接在 控制面板\系统和安全\系统\高级系统设置\高级\环境变量...
中设置即可。
使用命令临时设置环境变量
通过set命令,可以在CMD中设置环境变量:
C:\WINDOWS\system32>set a=1
C:\WINDOWS\system32>echo %a%
1
通过set对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。
使用命令永久设置环境变量
通过setx命令,可以在CMD中设置永久生效的环境变量:
C:\WINDOWS\system32>SETX A 1
成功: 指定的值已得到保存。
关闭或重启计算机,会发现此环境变量仍然生效。
setx 变量名 值
设置的是当前用户可见的环境变量。
如果需要设置为系统环境变量,则可以使用 setx 变量名 值 /m
。
将某个环境变量设置为空
直接将空字符串赋值给环境变量即可:
SETX A ""
使用set的话,可以什么都不传,或赋值一个空字符串:
SET A=
SET A=""
追加环境变量
在将需要附加的环境变量使用 %%
包住,赋值给自己即可:
C:\WINDOWS\system32>SETX A %A%;2
成功: 指定的值已得到保存。
C:\WINDOWS\system32>echo %A%
1;2
C:\WINDOWS\system32>set A=%A%;3
C:\WINDOWS\system32>echo %A%
1;2;3
这种方式可以很方便地为 PATH
追加内容。
四、常用的环境变量
名称 | 描述 | 举例 | 作用范围 |
---|---|---|---|
%UserProfile% | 当前用户的配置文件的位置。 | C:\Users\quanzaiyu | 局部 |
%AllUsersProfile% | 所有“用户配置文件”的位置。 | C:\ProgramData | 局部 |
%AppData% | 应用数据存储路径(漫游) | C:\Users\quanzaiyu\AppData\Roaming | 局部 |
%LocalAppData% | 应用数据存储路径(本地) | C:\Users\quanzaiyu\AppData\Local | |
%SystemRoot% | 返回 Windows 系统根目录的位置。 | C:\WINDOWS | 系统 |
%WinDir% | 返回操作系统目录的位置。 | C:\WINDOWS | 系统 |
%CD% | 返回当前目录字符串 | 局部 | |
%UserName% | 返回当前登录的用户的名称。 | quanzaiyu | 局部 |
%CMDCMDLINE% | 返回用来启动当前的 Cmd.exe 的准确命令行。 | cmd.exe | 局部 |
%CMDEXTVERSION% | 返回当前的“命令处理程序扩展”的版本号。 | 2 | 系统 |
%COMPUTERNAME% | 返回计算机的名称。 | DESKTOP-T1071CD | 系统 |
%COMSPEC% | 返回命令行解释器可执行程序的准确路径。 | C:\WINDOWS\system32\cmd.exe | 系统 |
%DATE% | 返回当前日期。使用与 date /t 命令相同的格式。 | 2020/09/28 周一 | 系统 |
%ERRORLEVEL% | 返回最近使用过的命令的错误代码。通常用非零值表示错误。 | 0 | 系统 |
%HOMEDRIVE% | 返回连接到用户主目录的本地工作站驱动器号。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。 | C: | 系统 |
%HOMEPATH% | 返回用户主目录的完整路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。 | \Users\quanzaiyu | 系统 |
%HOMESHARE% | 返回用户的共享主目录的网络路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。 | 系统 | |
%LOGONSEVER% | 返回验证当前登录会话的域控制器的名称。 | 局部 | |
%NUMBER_OF_PROCESSORS% | 指定安装在计算机上的处理器的数目。 | 12 | 系统 |
%OS% | 返回操作系统的名称。Windows 2000 将操作系统显示为 Windows_NT。 | Windows_NT | 系统 |
%PATH% | 指定可执行文件的搜索路径。 | C:\Program Files (x86)\VMware\VMware Workstation\bin\;… | 系统 |
%PATHEXT% | 返回操作系统认为可执行的文件扩展名的列表。 | .COM;.EXE;.BAT;.CMD;.VBS;… | 系统 |
%PROCESSOR_ARCHITECTURE% | 返回处理器的芯片体系结构。值: x86,IA64。 | AMD64 | 系统 |
%PROCESSOR_IDENTFIER% | 返回处理器说明。 | 系统 | |
%PROCESSOR_LEVEL% | 返回计算机上安装的处理器的型号。 | 6 | 系统 |
%PROCESSOR_REVISION% | 返回处理器修订号的系统变量。 | 9e0a | 系统 |
%PROMPT% | 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。 | $P$G | 局部 |
%RANDOM% | 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。 | 3512 | 系统 |
%SYSTEMDRIVE% | 返回包含 Windows XP 根目录(即系统根目录)的驱动器。 | C: | 系统 |
%TEMP% and %TMP% | 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其它应用程序则需要 TMP。 | C:\Users\QUANZA~1\AppData\Local\Temp | 系统和用户 |
%TIME% | 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关 time 命令的详细信息,请参阅 Time。 | 17:25:07.42 | 系统 |
%USERDOMAIN% | 返回包含用户帐户的域的名称。 | DESKTOP-T1071CD | 局部 |
五、环境变量在注册表中的位置
其实所有的环境变量都是存放于注册表中的,其中:
- 用户环境变量存放于
HKEY_CURRENT_USER\Environment
- 系统环境变量存放于
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
这样,就可以很轻松地导出环境变量了,以便重装系统快速恢复。