Powershell 如何使用参数将命令别名为同一命令?
我正在寻找一种在powershell中将“emacs”映射到“emacs-nw”的方法。我试过这个(下面的屏幕截图),它将它添加为别名,但不起作用。但是,“emacs-nw”命令在设置别名之前起作用 我还想为将来的会话保存该别名(重新启动powershell会让我回到原点) 编辑:(传统信息) 还尝试创建一个函数,但调用该函数时powershell会冻结一段时间,然后我收到以下消息(下面的屏幕截图) 编辑2:(传统信息) 起初,Powershell 如何使用参数将命令别名为同一命令?,powershell,Powershell,我正在寻找一种在powershell中将“emacs”映射到“emacs-nw”的方法。我试过这个(下面的屏幕截图),它将它添加为别名,但不起作用。但是,“emacs-nw”命令在设置别名之前起作用 我还想为将来的会话保存该别名(重新启动powershell会让我回到原点) 编辑:(传统信息) 还尝试创建一个函数,但调用该函数时powershell会冻结一段时间,然后我收到以下消息(下面的屏幕截图) 编辑2:(传统信息) 起初,函数enw{emacs.exe-nw}(为了便于解释,将函数名更
函数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
的结果来查看这一点 这个函数不尝试调用自己吗?无论如何,它不是那样工作的。等待一段时间后,我得到“由于调用深度溢出,脚本失败”。