哪些 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
我正在使用 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