环境变量被 PowerShell Alias 覆盖?修改配置文件轻松解决
背景故事
最近在开发程序的时候需要用到 CURL 来发送一些网络请求,于是就使用 Scoop 管理器安装了 CURL 。本来是一个很简单的事情,但是在随后使用命令行调用 CURL 时却发现对应的程序是 Invoke-WebRequest 。在确认了环境变量后也不得不承认这个属实是把我难住了。不过通过我的的一番询问,最终了解到了这是 powershell 默认提供的别名(alias)之一。
(在单次会话中)移除别名
既然找到了问题的所在,那么解决起来就容易了。经过一番网上冲浪,也寻得了以下命令来移除别名:
Remove-Item alias:curl
在命令行中输入后也的确解决了问题,CURL 也能正常使用了。于是我便高高兴兴结了案,去 调戏 CURL 了。
不过比较了解我的朋友大概知道,这种小事情我一般是不会拿出来分享的。既然你能看到这篇文章,那么一定没这么简单!
没错,单独输入这条命令的移除效果仅限本次会话。
(永久的)移除别名
当我隔天打开命令行,准备享受我之前的劳动成果(指设置 CURL )时,显示的 Invoke-WebRequest 无疑是给了我当头一棒。于是我便再次搜索这个问题,才在官方文档中了解到使用 Remove-Item alias:curl
的效果仅限于单次会话。
不过文档中同样也给了一种解决方案,便是在 powershell 配置文件中添加配置语句。
但是仅仅这一句话显然是不足以解决问题的,于是我便进一步查找了解决方法。那么也不多说了,下面是完整的解决方案:
检查电脑中是否存在 powershell 配置文件。
Test-Path $profile
输入这条命令后如返回为
True
则代表电脑中已经存在配置文件,可以直接跳到编辑一步。如返回为False
则相反,这代表你需要创建一个新的配置文件创建 powershell 配置文件
在命令行中输入以下命令即可创建一个新的配置文件。如果你的电脑中已经存在配置文件则可以跳过这一步。New-Item -path $profile -type file -force
使用记事本打开配置文件
notepad $profile
在配置文件中输入以下内容并保存
Remove-Item alias:curl
在命令行中重载配置文件
最后我们回到命令行中,输入以下内容来重载配置文件。随后重新打开 powershell 的窗口,别名应该就已经被移除了!. $profile
那么按照步骤完成设置,你的 alias 问题应该就已经被彻底解决了。不过此处需要注意,部分只读的 alias 需要在命令的后方增加 -force
参数来强制修改。
结尾
趁着劲头写完这篇文章后已经是早上两点钟了,就这样简简单单的结个尾吧。顺便在这个(即将到达的)特别的日子里,祝各位新春快乐!
2024-08-02 回复
好