今天跟大家唠唠我最近折腾的userenv那点事儿,一开始我对这玩意儿也是一头雾水,但经过一番摸索,总算是搞明白,现在就来分享一下我的实践过程。
最初,我是在捣鼓一个需要读取用户环境变量的脚本,结果发现总是读取不到,就开始怀疑是不是环境变量没设置对。然后我就开始我的探索之旅。
我就像大家一样,先去网上搜一堆资料,什么“我的电脑右键-属性”,“控制面板-系统和安全”,各种方法都试个遍。我记得最开始我是这么操作的:
- 第一步:右键点击“此电脑”,选择“属性”。
- 第二步:在弹出的窗口中,找到“高级系统设置”,点进去。
- 第三步:然后就看到“环境变量”按钮,点它!
到这里,界面是出来,但是问题也来,我发现我设置的环境变量,脚本就是读不到!我当时就懵,心想这环境变量是假的?难道我打开方式不对?
然后我就开始各种尝试,是不是用户变量和系统变量搞错?我是把变量加到用户变量里,想着是不是应该加到系统变量里?于是我又把环境变量复制一份到系统变量里,结果还是不行!
折腾半天,我突然想到,是不是我设置环境变量之后,程序没有重新加载?于是我尝试重启电脑,结果...还是不行!当时我真想砸电脑。
后来我冷静下来,仔细思考一下,环境变量这东西,总得有个生效的机制?于是我又开始查资料,这回我换个关键词,搜索“环境变量 生效”。
终于,我找到问题的关键!原来,在Windows下,如果你通过图形界面修改环境变量,有些程序是不会立即加载新的环境变量的,需要重新启动程序或者重新登录用户才能生效。
但是,我的程序是在命令行里运行的,总不能每次修改环境变量都重启电脑?这也太麻烦!于是我又开始寻找其他的解决方案。
我找到一个方法,就是使用setx
命令。这个命令可以修改环境变量,并且可以立即生效,不需要重启电脑或者重新登录用户。
具体用法是这样的:
setx MY_VARIABLE "my_value"
这条命令会将名为MY_VARIABLE
的环境变量设置为my_value
,并且立即生效。
于是我尝试使用setx
命令设置环境变量,然后重新运行脚本,结果... 终于成功!
这回经历让我明白,解决问题不能盲目尝试,要冷静分析,找到问题的本质。也要善于利用网络资源,搜索关键词很重要!
这回折腾userenv
的经验教训:
- 第一:设置环境变量后,需要重新启动程序或者重新登录用户才能生效。
- 第二:可以使用
setx
命令修改环境变量,并且立即生效。 - 第三:遇到问题要冷静分析,善于利用网络资源。
希望我的这回分享能帮到大家,少走弯路!