环境变量是什么
- 环境变量是一种在系统里的变量,可以理解成一种属性,就放在那,有需要的程序就会去读,类似写代码里的全局变量
- 通常用作,程序运行时的一些参数
- 环境变量分为用户,系统。
举个经典的栗子,Java安装的时候,需要自己手动配置环境变量,非常头大
但其实Windows可以通过命令行一句话设置。
- 假设我们需要设置
JAVA_HOME这个环境变量
PowerShell 中的Env
在powershell里有3个环境变量,除开上面说的用户和系统,还有一个临时环境变量(自己取的名字),就是env:
- 优先级:临时>用户>系统
- 彼此不会相互覆盖
临时环境变量的位置
环境变量放在env:里面,这块变量区域被映射成了一个文件分区
就像C: D: E: F: 一样
可以用进入
cd env:
临时环境变量:
$env:[variable name] = 'value'
example:
$env:JAVA_HOME="C:\JAVA"

当你退出当前终端后,临时环境变量就会失效,所以我们通常设置永久的
永久环境变量
就像上面说的,永久的还分为,用户和系统
[Environment]::SetEnvironmentVariable("[variable name]","[value]","<User | Machine>")
Example:
第三个参数可写可不写,默认是User
[Environment]::SetEnvironmentVariable("JAVA_HOME","D:\JAVA","Machine")
下面这个就是永久修改的:
不过可能需要重启电脑

删除环境变量
- 当
[value]为$null即可删除环境变量
example:
$env:JAVA_HOME=$null
[Environment]::SetEnvironmentVariable("JAVA_HOME",$null)
往PATH添加一条环境变量
注意:
因为path里每一条记录中间用;分开,所以你在加入一条记录的时候,需要用;作为前缀
(Unix-like分割符是:)
$JAVA_HOME = "E:\JAVA"
$env:PATH += ";"+$JAVA_HOME
当然这样就是暂时的,全局永久的方法如下:
$oldpath = [Environment]::GetEnvironmentVariable('PATH', 'Machine')
$newpath = $oldpath + ';New Value'
[Environment]::SetEnvironmentVariable("PATH", $newpath, 'Machine')
关于PATH这个变量
PATH的用处,通常用于记录一些可执行文件的位置,
比如PATH里有一条变量是 C:\Program Files\java\bin
那么,你在打命令java的时候,就会去这个目录下面找这个可执行文件
其等效于:
C:\Program Files\java\bin\java.exe
如此,就可以在 powershell 的任何位置,运行一个java.exe,而不用指明其完整路径。
所以,所谓的配置Java 的环境变量,就是在PATH里加上java.exe的所在路径,以便我们可以方便的使用java.exe
powershell脚本
自己封装了一下,把这段脚本加到$PROFILE里,就可以用了。路径会添加到用户所在的PATH里面
不添加到系统是避免系统环境变量损坏导致出现奇怪bug。
因为$符号在渲染的时候起了冲突,我把代码放到github上了
New-Alias ade Add-UserEnvironmentVariable
function Add-UserEnvironmentVariable($NewPath){
$PreviousPath = [System.Environment]::GetEnvironmentVariable("Path", "User")
$New = "$PreviousPath;$NewPath"
[System.Environment]::SetEnvironmentVariable("Path", "$New", "User")
return New-Object psobject -Property @{Path = $New -split ";"}
}
Example:
ade 'D:\JAVA HOME\bin'
本文介绍了Windows系统中环境变量的类型,包括临时和永久环境变量,并详细讲解了如何通过PowerShell设置和删除这些变量。重点阐述了PATH变量的作用,以及配置环境变量的重要性,如配置Java环境。此外,还提供了一个PowerShell脚本来简化环境变量的添加过程。

1020

被折叠的 条评论
为什么被折叠?



