Powershell 如何使用参数将命令别名为同一命令?

Powershell 如何使用参数将命令别名为同一命令?,powershell,Powershell,我正在寻找一种在powershell中将“emacs”映射到“emacs-nw”的方法。我试过这个(下面的屏幕截图),它将它添加为别名,但不起作用。但是,“emacs-nw”命令在设置别名之前起作用 我还想为将来的会话保存该别名(重新启动powershell会让我回到原点) 编辑:(传统信息) 还尝试创建一个函数,但调用该函数时powershell会冻结一段时间,然后我收到以下消息(下面的屏幕截图) 编辑2:(传统信息) 起初,函数enw{emacs.exe-nw}(为了便于解释,将函数名更

我正在寻找一种在powershell中将“emacs”映射到“emacs-nw”的方法。我试过这个(下面的屏幕截图),它将它添加为别名,但不起作用。但是,“emacs-nw”命令在设置别名之前起作用

我还想为将来的会话保存该别名(重新启动powershell会让我回到原点)

编辑:(传统信息) 还尝试创建一个函数,但调用该函数时powershell会冻结一段时间,然后我收到以下消息(下面的屏幕截图)

编辑2:(传统信息) 起初,
函数enw{emacs.exe-nw}
(为了便于解释,将函数名更改为“enw”)似乎可以工作。但是,还有一个问题。对于标准的emacs,我可以键入
emacs-nw filename.txt
,这将在
emacs-nw
中打开文件
filename.txt
。调用函数
enw filename.txt
将不会打开
filename.txt
文件,提供与键入
enw
相同的结果


解决方法是
函数enw{Param($myparam)emacs.exe-nw$myparam}

尝试创建一个函数:

function emacs {emacs.exe -nw}

然后将其添加到powershell配置文件(
$profile

创建一个函数,但在函数中显式调用.exe:

function emacs {emacs.exe -nw}

我知道你有你的答案,但我只是想在这里说清楚。您创建了一个递归函数

通过不将.exe指定为扩展的一部分,PowerShell能够将
emacs
匹配回您的函数定义。所以它会无限地称自己


您可以通过在注册函数之前和之后检查
Get命令emacs
的结果来查看这一点

这个函数不尝试调用自己吗?无论如何,它不是那样工作的。等待一段时间后,我得到“由于调用深度溢出,脚本失败”。