哪些 Windows 版本包含 shebang 支持?

Which Windows versions include where with shebang support?

我正在使用 pyenv-win 并发现在我的 Windows 版本 (20H2 19042.1165) 中,where.exe 支持带有 shebang 的脚本:

C:\> where python
C:\Users\ded\.pyenv\pyenv-win\shims\python
C:\Users\ded\.pyenv\pyenv-win\shims\python.bat

第一个 python 文件是:

#!/bin/sh
pyenv exec $(basename "[=12=]") "$@"

魔法是什么? where.exe 是否支持原生 shebang?哪个 Windows 版本包含此功能?

PS: 运行 python in a cmd 将执行 python.bat 而不是 python.

where.exe 正在路径中查找具有您指定名称的文件。如果没有扩展名,它还会尝试 PATHEXT 环境变量中列出的所有扩展名。您的文件不需要 shebang 就可以找到。

下面创建了一些文本文件,where 找到了无扩展名的文件以及扩展名列在 PATHEXT 中的文件:

C:>set pathext
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.py;.pyw

C:>echo >abc

C:>echo >abc.txt

C:>echo >abc.bat

C:>where abc
C:\abc
C:\abc.bat