【问题标题】:Which Windows versions include where with shebang support?哪些 Windows 版本包含 shebang 支持?
【发布时间】:2021-10-18 17:19:13
【问题描述】:

我正在使用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 "$0") "$@"

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

PS:在cmd 中运行python 将执行python.bat 而不是python

【问题讨论】:

    标签: windows shebang


    【解决方案1】:

    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
    

    【讨论】: