![bf3e2e7c9f30b25e30a9e84f1cd5445e.png](https://i-blog.csdnimg.cn/blog_migrate/36d3304dbb50e8c3134b08de4061688a.png)
本文章转自个人博客 https:// blog.vvzero.com , 转载请注明出处。
直接看步骤的话,在最下方。
背景
Windows Terminal 虽然还处于预览阶段,但是也出来很长一段时间了。它的历史使命,也许就是让原生 Windows 也能有一个像样的命令行环境。以前我一直在用 Cmder,但是 Cmder 的启动速度确实不敢恭维,而 Windows Terminal 启动确实很快。相比 Cmder, Windows Terminal 还缺少很多功能,不过以后应该很快也会补上。
![e238e10e46e5fff0f991c62e734e2fb1.png](https://i-blog.csdnimg.cn/blog_migrate/15a06f19b6f92b6e08f667b7424ce428.jpeg)
我想尝试使用 Windows Terminal 进行开发。Windows Terminal 默认可以使用 PowerShell
、cmd
、wsl bash
作为脚本工具。既然是在 Windows 环境下嘛,还是得尊敬一下 Windows PoweShell 的。初次使用,我觉得 PowerShell 跟 Cmder 用起来,最不方便的一点就是,我在 Cmder 里面设了很多的 Alias,也就是通过修改 config/user_aliases.cmd
写一串 <alia>=<xxx> <xxx>
来实现的。
![cff9390832a7b77e8b3aaf48b6ab4b0e.png](https://i-blog.csdnimg.cn/blog_migrate/f8bdf252b1ac3baa236632973f16905f.jpeg)
但是,PowerShell 如何实现命令的别名设置呢?
探索过程及原理概述
如果搜索关键词 windows powershell set user alias
,通常谷歌会给出微软官方文档,但是这个文档只是告诉我们如何在脚本里面设置临时的别名,如果要设置永久别名,该怎么办?实际上,“别名”这种东西,也就是 alias
,几乎所有的脚本语言,都没有所谓的“永久别名”(Permanent alias),我们使用 Linux bash 、Cmder 之类的脚本工具,打开终端时,系统会默认执行一个脚本文件( bash 是用户目录下的 .bashrc
,Cmder 是 config/user_aliases.cmd
),而这样的脚本文件里,就包含了别名的定义。这也是为什么,我们在 Linux 类系统中,修改 .bashrc
后,必须要重新登出登录、或者 source .bashrc
的原因了。
所以,我们只要修改 Windows Powershell 启动时执行的文件就行了。很多论坛里面说,默认执行的脚本是 $HomeDocumentsprofile.ps1
,也就是 C:Users你的用户名Documentsprofile.ps1
,但是这并不正确,最好的方式是,先启动 PowerShell ,再执行 echo $profile
,这样得到的文件路径,才是 PowerShell 的默认执行文件路径。
![4f0194c2e852e3ba1c484ab781cfc711.png](https://i-blog.csdnimg.cn/blog_migrate/5410dd97fc6f15e8626931a480d147c6.png)
然后,创建这个文件就好啦。
在文件里面,写上别名设置的语句。再一次注意,假如你的别名指代的命令含有空格,就不可以使用 New-Alias
命令,因为它不能带空格,即使你把指代的命令用引号括起来也没用。那怎么办呢?继续谷歌,原来,正确姿势是用 function
,也就是,我们把自己要定义的指令,定义为一个函数,就行啦。
![428d170ac3cd9a9ee688033bad291be4.png](https://i-blog.csdnimg.cn/blog_migrate/ecf85928aa5a65718fcd2293470b9dbb.png)
保存文件,重新启动 PowerShell 以后,不出意外,应该会报一个 File xxxxxxxMicrosoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system.
根据此链接,出现这种情况,是因为 Windows 系统为了防止恶意脚本自动执行,故默认不允许自动运行脚本。所以,在确定自己有能力把控的情况下,以管理员身份,在 PowerShell 中执行 Set-ExecutionPolicy RemoteSigned
,即可。
再次重启 PowerShell,应该可以发现,自定义别名已经生效了。
步骤整理
如果你想为自己的 Windows PowerShell 设置永久的命令别名 (Alias),可以遵循以下步骤:
- 打开 PowerShell ,运行
echo $profile
,会输出一个文件路径。创建这个文件。 - 打开刚创建的文件,按以下格式设置多条别名:
function 别名 { 需要替代的命令,可以包含空格 }
- 以管理员身份打开 PowerShell,执行
Set-ExecutionPolicy RemoteSigned
。 - 重新启动 PowerShell ,应该已经完成了。