Powershell 解决具有相同名称的两个命令之间的冲突

Powershell 解决具有相同名称的两个命令之间的冲突,powershell,Powershell,我在Windows10上运行PowerShell,并同时使用mingw和WinAVR 我想同时使用mingw和WinAVR提供的make。(由于某些原因,在使用Arduino代码时,使用mingw的make会导致问题。) 但是我不能将C:\WinAVR-20100110\utils(包含WinAVR make)和C:\Program Files\mingw-w64\x86\u 64-8.1.0-posix-seh-rt\u v6-rev0\mingw64\bin都添加到路径中,因为它们有同名的可

我在Windows10上运行PowerShell,并同时使用mingw和WinAVR

我想同时使用mingw和WinAVR提供的
make
。(由于某些原因,在使用Arduino代码时,使用mingw的make会导致问题。)

但是我不能将
C:\WinAVR-20100110\utils
(包含WinAVR make)和
C:\Program Files\mingw-w64\x86\u 64-8.1.0-posix-seh-rt\u v6-rev0\mingw64\bin
都添加到路径中,因为它们有同名的可执行文件

我可以做一些类似的事情,将WinAVR提供的每个命令都预先添加到avr(
make
avr make
)中吗?或者还有其他的散步吗?

你可以:

  • 将要作为
    make
    调用的一个可执行文件的目录添加到
    $env:Path
    (第一个)
    C:\Program Files\mingw-w64\x86\u 64-8.1.0-posix-seh-rt\u v6-rev0\mingw64\bin

  • 通过将以下内容添加到您的
    $PROFILE
    文件,将另一个定义为别名:

请注意,别名的优先级高于可执行文件

见和


如果要为给定目录中的所有可执行文件定义此类别名,请使用以下方法:

Get-Item C:\WinAVR-20100110\utils\*.exe | ForEach-Object {
  Set-Alias ('avr-' + $_.BaseName) $_.FullName
}

您可以使用
New Alias
cmdlet创建一个临时别名,该别名将调用正确的util。例如,我制作了一个调用
FindStr.exe
util的
Ziggy FindStr
。它可以在列出的文件中找到目标单词所在的行;我的荣幸。
Get-Item C:\WinAVR-20100110\utils\*.exe | ForEach-Object {
  Set-Alias ('avr-' + $_.BaseName) $_.FullName
}