如何编写将调用 python3 或 python2 的 shebang 行

How to write a shebang line that will call either either python3 or python2 whichever is available

流行的 linux 发行版的最新版本默认选择不安装任何 python 命令。这使得编写适用于旧系统和新系统的可移植脚本变得异常困难。

臭味选项:

有没有一种方法可以编写仅使用通常安装的标准 linux 标准工具的 shebang #! 行,并且可以 运行 python3python2, 或 python ?

我想要 env 命令的虚构 --choices 参数

#!/usr/bin/env --choices python3,python2,python

但这当然不存在。

基于 的想法,您可以这样做:

#!/bin/bash
'''':
for interpreter in python3 python2 python
do
    which $interpreter >/dev/null 2>&1 && exec $interpreter "[=10=]" "$@"
done
echo "[=10=]: No python could be found" >&2
exit 1
# '''


import sys
print(sys.version)