从 PATH 中选择隐藏在 powershell 中同名程序后面的程序

从 PATH 中选择隐藏在 powershell 中同名程序后面的程序

假设我的 PATH 中有两个同名程序,我该如何执行第二个程序?即,如何从 Windows 而不是从 Windowstar执行以下命令:scooptar

PS D:\mdn\kapeli> where.exe tar
C:\Windows\System32\tar.exe
C:\Users\Dominik\scoop\shims\tar.exe

除了从上面的终端输出复制完整路径并将其粘贴回控制台之外,有没有更优雅的解决方案?

答案1

如果“排除规则”是选择程序不是在 中C:\Windows\System32,下面的方法可以解决问题:

Get-ChildItem $env:Path.Split(';') -Filter tar.exe -ea silent | where FullName -notMatch 'Windows\\System32' | Invoke-Item

答案2

您必须输入完整路径才能启动它。但这并不意味着您不能在 Powershell 中创建别名并将其绑定到程序。

例如:

set-alias scoop C:\Users\Dominik\scoop\shims\tar.exe

您现在可以输入scoop来运行您的 tar 版本。

请注意,如果您希望此信息在会话中持续存在,则必须编辑您的 powershell 配置文件并将其添加到那里。要编辑您的 powershell 配置文件,请运行以下命令:

    if (!(Test-Path (Split-Path $profile))) { mkdir (Split-Path $profile) } ; if (!(Test-Path $profile)) { New-Item $profile -ItemType file } ; powershell_ise $profile

另一个选择是修改 PATH 变量并将文件夹放在结构中较高的位置。然后如果您从任何地方运行 tar,它总是会首先找到您的文件夹并执行该文件夹。

答案3

如果它们都在路径变量中,也许可以重命名其中一个,比如说 tar2.exe,那么您可以输入 tar2.exe 来访问它。

相关内容