由于 Powershell 的跨平台,其环境变量修改可以在windows、linux、macos中。在 Linux 或 macOS 上,使用冒号 (:) 而不是分号 (;) 将新路径与列表中前面的路径分开。
环境变量的级别或范围
- 系统级别(
Machine
) - 用户级别(
User
) - 会话级别(
Process
),即在当前 powershell 内有效,关掉 powershell 就失效,会话级别的变量列表来自进程的设置、Machine
和User
范围中的变量,三者组成了会话中的环境变量。
修改环境变量([Environment]
)
下面仅用一条命令来实现 User
Path 环境变量的修改设置。
实际使用时直接复制即可,需要修改指定环境变量 $target
的作用域(用户 or 系统 or 会话),就可以实现环境变量的增改删查。$addPath
为要添加的新的PATH路径。
$addPath='c:\add\you\path\here'; $target='User'; $path = [Environment]::GetEnvironmentVariable('Path', $target); $newPath = $path + ';' + $addPath; [Environment]::SetEnvironmentVariable('Path', $newPath, $target)
有时当前的的 PATH 值的结尾已经有了分号;
,则可以通过判断$path
变量是否以;
结尾,来设置添加新增的路径时,是否添加;
,防止多余的;
。
$addPath='c:\add\you\path\here'; $target='User'; $path = [Environment]::GetEnvironmentVariable('Path', $target); if($path -match ";$"){ $newPath = $path + $addPath; } else { $newPath = $path + ';' + $addPath; } [Environment]::SetEnvironmentVariable('Path', $newPath, $target)
$addPath
为要添加的PATH路径$target
表示环境变量的级别(作用域),Machine
(系统级别) /User
(用户级别) /Process
(会话级别) 三选一,前两个修改后会即时生效,且关闭powershell会话任然有效。
注,此处的单引号'
也可以使用双引号"
。PowerShell中通过
-match
可以借助正则实现字符串匹配。
会话级别的修改环境变量,的另外方法
Powershell中$env
【推荐】
- 查看某个环境变量
$env:<ENV_Name>
如下查看Path环境变量的值:
$env:path
- 通过分割符
-split
参数,分割显示环境变量中的数据项。
上面直接查看全部环境变量的值,堆在一起不方便查看。则可以使用-split“;”
参数
$env:path -split";"
$Env:windir
显示windows路径;$env:os
查看当前系统;$env:NUMBER_OF_PROCESSORS
查看CPU核数...
- 添加或修改(替换)环境变量
$env:myEnvTest="a Environment Variable Test"
- 向已有环境变量添加新项
比如添加 path
项:
$env:path+=";c:\your_path"
添加 myEnvTest
项:
$env:myEnvTest+="Append Content"
- 清空环境变量值
$env:myEnvTest=""
Powershell中env
直接使用env
只能作为一个关键字,需要结合其他命令实现查看(ls
)、删除(del
)、添加功能。
- 查看所有环境变量
ls env:
- 搜索某关键字的环境变量
ls env:NODE*
- 查看某环境变量
ls env:NODE_ENV
# 或查看path
ls env:path
- 删除环境变量【慎重,好在只是会话级别修改】
del evn:<ENV_Name>
cmd中使用set命令
cmd设置环境变量
- 查看所有环境变量
set
- 查看单个环境变量
set path
- 添加/更新环境变量
set NODE_ENV=development
- 删除环境变量
set NODE_ENV=