You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DOS/CMD中where命令返回多个可执行文件结果时,实际执行哪一个?Win10多环境下的实操疑问

Windows下grep命令执行优先级的问题解答

咱们先明确你的环境:

  • 当前系统:Windows 10
  • 已安装工具:Cygwin、Git for Windows、Ubuntu WSL

你执行的命令及返回结果

DOS(CMD)环境下的输出

执行 where grep

C:\>where grep
C:\cygwin64\bin\grep.exe
C:\Program Files\Git\usr\bin\grep.exe

执行 which grep

C:\>which grep
/usr/bin/grep

PowerShell环境下的输出

执行 gcm grep*

C:\> gcm grep*
CommandType Name Version Source
----------- ---- ------- ------
Application grep.exe 0.0.0.0 C:\cygwin64\bin\grep.exe
Application grep.exe 0.0.0.0 C:\Program Files\Git\usr\bin\grep.exe

核心问题解答:实际运行哪个?遵循什么顺序?

你直接在CMD或PowerShell里敲grep ...时,实际运行的是C:\cygwin64\bin\grep.exe。

这里的执行规则其实很明确:
不管是CMD还是PowerShell,都是严格按照系统PATH环境变量的目录顺序来查找可执行文件的——它会从PATH里的第一个目录开始逐个检查,找到第一个匹配的grep.exe就会直接启动,不会继续往后查找。

你看到where和gcm的结果里Cygwin的grep排在最前面,本质就是因为你的PATH环境变量中,C:\cygwin64\bin这个目录的位置比C:\Program Files\Git\usr\bin更靠前,工具返回的结果顺序完全对应PATH的查找优先级,和实际执行的顺序是一致的。

另外提一句你在CMD里执行which grep得到的/usr/bin/grep,这个是Git for Windows自带的which命令返回的结果,它会优先适配Git的环境路径,并不是CMD实际会执行的那个grep路径,别和实际执行优先级搞混了。

内容的提问来源于stack exchange,提问作者evilmandarine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 21:07:26