关于环境变量,有两个痛点
- 系统环境变量总在用户环境变量前面,如果系统安装了一个过低或过高版本的 cmake,而你很难把另一个版本的 cmake 排在前面
- 如果没有管理员权限,就无法打开环境变量调整对话框,不好持久调整环境变量
调整环境变量顺序
该问题虽然可以每次手工调整$env:Path
但终究太麻烦,可以首先设置开发者模式中允许执行未签名的 PowerShell 脚本,然后修改在$PROFILE
处创建文件完成。
1. 允许执行未签名的本地 PowerShell 脚本
这件事不需要管理员权限,没想到吧?Windows 11下调整路径为
系统 > 开发者选项 > PowerShell > 更改执行策略,以允许本地 PowerShell 脚本在未签名的情况下运行。远程脚本需要签名
这样一来就可以设定自己的$PROFILE了。
2. 调配$PROFILE
在命令行输入:
PS C:\Users\pc> $PROFILE
C:\Users\pc\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
如果文件不存在,手工创建此文件,然后内容写入:
$prepend = "C:\Users\pc\.local\bin;C:\Users\pc\AppData\Local\Programs\Git\bin"
if ($env:PATH -notlike "$prepend*") {
$env:PATH = "$prepend;" + $env:PATH
}
如果想要把特定版本的 cmake 提前,只要把 cmake bin 目录写入到$prepend
里。总之可以把任何想要的目录加到最前面了。
推荐创建~/.local/bin/
然后把小工具放进去,方便快捷。
持久化用户环境变量
该问题可通过setx实现,比如设置代理:
setx HTTP_PROXY "http://127.0.0.1:7890"
setx HTTPS_PROXY "http://127.0.0.1:7890"
或者调整 PATH:
setx PATH "$($env:Path);C:\mytools\bin"
前面调整的$PROFILE
并不能在非命令行程序上生效,像配置代理或者顺序不重要的 Path,就可以放到这里来