终端设置含空格值的环境变量异常,寻求正确设置方法
解决PowerShell中设置带空格变量的问题
问题原因
你在PowerShell中误用了CMD的set命令语法,PowerShell里的set是Set-Variable的别名,语法逻辑和CMD完全不同:
- CMD的
set VAR=value是直接赋值键值对 - PowerShell中
set 变量名 值会把第一个参数当作变量名,第二个当作值,所以set TOKEN=Bearer allthebest会被解析为变量名TOKEN=Bearer,值allthebest,和预期不符。
正确解决方法
根据需求,推荐三种可行方案:
1. PowerShell原生变量赋值
这是最常用的方式,直接用PowerShell的变量语法赋值:
$TOKEN = "Bearer allthebest"
验证:执行Get-Variable TOKEN,会看到变量名是TOKEN,值为Bearer allthebest。
2. 设置PowerShell环境变量
如果需要让子进程也能访问这个变量,直接设置环境变量:
$env:TOKEN = "Bearer allthebest"
验证:直接输入$env:TOKEN即可查看值,子进程(比如CMD窗口)也能读取到这个变量。
3. 调用CMD的set命令(不推荐)
如果一定要用CMD的set语法,需要通过cmd /c调用CMD执行,不过这样设置的是CMD环境变量,PowerShell中需要通过$env:前缀访问:
cmd /c "set TOKEN=Bearer allthebest"
验证:执行$env:TOKEN查看值。
内容的提问来源于stack exchange,提问作者Michael_O
相关产品推荐
相关产品推荐

