如何阻止PsReadline在Tab补全时为可执行文件追加.exe后缀
解决PowerShell中Tab补全可执行文件自动添加.exe后缀的问题
在PowerShell 7.4(Windows 11环境)中,输入wg按Tab键时,PsReadLine会自动补全为wget.exe,但希望仅补全为wget。修改历史命令时需频繁删除多余的.exe后缀,目前只能通过设置大量别名规避,示例如下:
... Set-Alias -Name Edge -value "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" Set-Alias -Name Calibre -value "C:\Program Files\Calibre2\calibre.exe" ...
需求:仅关闭可执行文件的后缀补全,不影响普通文件名补全(注:此处wget是Windows版本外部命令,非PowerShell内置别名)
解决方案
临时生效(当前会话)
直接在PowerShell中执行以下命令,立即生效:
$PSReadLineOptions.TrimExeInCompletion = $true
执行后,Tab补全可执行文件时会自动去掉.exe后缀,普通文件名补全不受影响。
永久生效(所有PowerShell会话)
将配置写入PowerShell的全局配置文件,重启后永久生效:
- 打开全局配置文件:
notepad $PROFILE.CurrentUserAllHosts - 在文件末尾添加一行:
$PSReadLineOptions.TrimExeInCompletion = $true - 保存并关闭文件,重启PowerShell即可生效。
内容的提问来源于stack exchange,提问作者Ralf_Reddings
相关产品推荐
相关产品推荐

