如何创建在与shell相同的进程中运行的Powershell别名(或函数或cmdlet)?

Jon*_*caC 4 windows powershell process

在Unix中,我创建了很多别名/函数.这是我的工作流程:

* I have a file named 'aliases.txt' in my $HOME directory
* I have a quick command to edit that file
* I have an alias named 'sa' that sources that alias file. I.e.

  alias sa='. $HOME/aliases.txt
Run Code Online (Sandbox Code Playgroud)

因此,我可以快速轻松地创建,修改和使用新别名.

我试图在Powershell中重新创建相同的工作流程,但它不起作用.我的$ HOME目录中有aliases.ps1文件.我尝试创建一个'sa'别名,但当然Powershell别名不能包含参数.所以我试过了

function sa {. $HOME\aliases.ps1 }
Run Code Online (Sandbox Code Playgroud)

我可以运行它,但我的aliases.pl1文件中的更改不会反映在我的shell会话中.我假设它是因为Windows在新进程中运行'sa'函数,而Unix在同一进程中运行函数和别名.我怎样才能让我的'sa'回来?

(BTW,"每次在命令行输入'.$ HOME\aliases.ps1'"不是我正在寻找的答案.

提前致谢.

mjo*_*nor 7

. sa
Run Code Online (Sandbox Code Playgroud)

足够简洁?您只需要将函数调用点源到当前范围.(注意点和函数名之间需要有一个空格).

  • 您还可以使用set-alias的-scope参数显式确定新别名的范围,以强制将别名创建为父作用域. (2认同)