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



在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

所以我可以快速,轻松地创建,修改和使用新的别名。

我试图在Powershell中重新创建相同的工作流程,但它不起作用。我查到了他们的化名。$HOME目录下的ps1文件。我尝试创建一个"sa"别名,但当然Powershell别名不能包含参数。所以我试过

function sa {. $HOMEaliases.ps1 }

我可以运行它,但更改我的别名。Pl1文件不反映在我的shell会话。我认为这是因为Windows在一个新进程中运行'sa'函数,而Unix在同一进程中运行函数和别名。我怎样才能找回我的"sa"?

(顺便说一句,"类型"。$ HOME 别名。ps1"每次在命令行"不是我想要的答案。

Would

. sa

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

你想干什么?你的问题有些地方没有意义。

好了,我现在明白了。

Import-Alias正是为了这个目的!编辑文件并执行Import-Alias file,您将获得已添加的新别名。


你的流程:

使用Set-Alias命令设置别名并将其添加到配置文件中,或者直接将该功能添加到配置文件中。

notepad $profile
(add the next in notepad)
function sa {. HOMEaliases.ps1 }

现在sa,应该是可用的和别名。ps1可以设置为使用Set-Alias并添加别名。

你正试图将你在unix中所做的完全映射到Powershell。您应该尝试使用powershell提供的功能:

Powershell流:

 notepad $profile
 (in notepad)
 Set-Alias <alias> <command>

只需在配置文件中添加Set-Alias命令。

或者使用Export-Alias导出为文件,并添加Import-Alias从配置文件中的文件导入。

所有这些都很好地解释在这里:http://technet.microsoft.com/en-us/library/ee692685.aspx