我正在尝试覆盖windows find
命令,以便我可以调用find
的另一个实现。另一个实现由MSYS提供,位于C:\ MinGW \ msys \ 1.0 \ bin中。在Windows 7上,我可以打开一个CMD,然后运行:
SET PATH=C:\MinGW\msys\1.0\bin;%PATH%
由于它在C:\ Windows \ System32 \ path之前为MSYS路径添加前缀,因此在Windows 7上的CMD中调用find
时,将执行MSYS版本。
该命令不适用于Windows 8.1。当我在Windows 8.1上调用CMD中的find
时,无论我做什么,它都默认为Windows实现。有没有办法在Windows 8.1上覆盖它?
我正在寻找一种只改变当前CMD实例的路径信息的解决方案。出于我的目的,我宁愿不必使用powershell(即使路径设置在powershell中按预期工作)。
谢谢!
答案 0 :(得分:6)
运行cmd.exe时,请确保没有从C:\ Windows \ System32目录运行该命令(这是我自动打开的目录)。当您在具有匹配命令的目录(在本例中为MS'get.exe)时,本地副本将优先于您的PATH变量,即使您的MSYS find.exe首先列在路径中。
所以,为了让它为我工作,我运行cmd.exe,然后
C:\WINDOWS\system32>SET PATH=C:\msys64\usr\bin;C:\Program Files (x86)\CodeBlocks\MinGW\bin;%PATH%
如果我运行where find
,我会
C:\WINDOWS\system32>where find
C:\Windows\System32\find.exe
C:\msys64\usr\bin\find.exe
C:\Program Files (x86)\Git\bin\find.exe
如果我更改目录并运行where find
,我会得到:
C:\WINDOWS\system32>cd C:\
C:\>where find
C:\msys64\usr\bin\find.exe
C:\Windows\System32\find.exe
C:\Program Files (x86)\Git\bin\find.exe
我的路径略有不同,因为我正在尝试使用MSYS2,但同样适用于旧版本的MSYS。
祝你好运@mikewesthad!