我使用pyenv-win,发现在我的Windows版本(20H2 19042.1165)中,where.exe
支持shebang脚本:
C:> where python
C:Usersded.pyenvpyenv-winshimspython
C:Usersded.pyenvpyenv-winshimspython.bat
第一个python文件是:
#!/bin/sh
pyenv exec $(basename "$0") "$@"
魔法是什么?在where.exe
中是否支持本地shebang ?哪个Windows版本包含此功能?
PS:在cmd
中运行python
会执行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