如何将python与bash中的py文件关联起来



一个常见的问题是"如果不在命令行上显式调用python,我如何使mypython脚本可执行?"答案是chmod +xit,然后在脚本开头添加#!/usr/bin/env python

这不是我要问的问题。

我想做的是告诉bash、python或任何负责文件处理的人,将所有设置了执行位的.py文件视为一开始就有shebang,无论它们是否真的这样做。

我知道在Windows中可以做到这一点,显然在Gnome中,你可以双击GUI中的.py脚本。我本可以发誓,我记得听说过从shell指定处理程序的等效方法。

为什么我想知道如何做到这一点(如果真的可能的话):

  • 并不是每个系统都使用shebang,我不想用它来混淆跨平台项目中的文件
  • 如果我正在向一个我不拥有的项目提交补丁,为了自己的方便,把与补丁无关的东西放进去对我来说有点讨厌

谢谢。

你是说binfmt_misc吗?

binfmt_misc是Linux内核的一种功能,它允许识别任意可执行文件格式,并将其传递给某些用户空间应用程序,如模拟器和虚拟机。

所以您想向它注册一个条目,所以每次您想执行.py文件时,内核都会将其传递给/usr/bin/python。

你可以试试类似的东西

# load the binfmt_misc module
if [ ! -d /proc/sys/fs/binfmt_misc ]; then
/sbin/modprobe binfmt_misc
fi
if [ ! -f /proc/sys/fs/binfmt_misc/register ]; then
mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
fi
echo ':Python:E::py::/usr/bin/python:' > /proc/sys/fs/binfmt_misc/register  

如果您使用基于Debian的分发,则必须安装binfmt支持。

您可以将:Python:E::py::/usr/bin/python:添加到/etc/binfmt.d/python.conf中,使其在重新启动后永久存在。

Rio6的答案是正确的。实际上没有任何操作系统支持它。您将需要binfmt,您可以在This git address 的源代码中自己编译它

相关内容

  • 没有找到相关文章

最新更新